make_parallel.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import sys
  2. from check_objects import to_recompile
  3. from compile import do_compile
  4. from link_and_load import link_and_load
  5. import random
  6. import multiprocessing
  7. import glob
  8. import os
  9. def do_compile_wrapper(args):
  10. address, taskname, filename = args
  11. do_compile(address, filename, str(random.random()), filename, "PO", ["--debug"])
  12. def main(address, taskname, files):
  13. new_files = to_recompile(address, files)
  14. if os.name == "posix":
  15. # At least linux decently implements forking, so use as many cores as possible
  16. p = multiprocessing.Pool(multiprocessing.cpu_count() * 2)
  17. p.map(do_compile_wrapper, [[address, taskname, f] for f in new_files])
  18. else:
  19. # Other systems are less intelligent, so just do this sequentially
  20. map(do_compile_wrapper, [[address, taskname, f] for f in new_files])
  21. link_and_load(address, taskname, files)
  22. if __name__ == "__main__":
  23. if len(sys.argv) < 4:
  24. sys.stderr.write("Expected different parameters!\n")
  25. sys.stderr.write(" %s address taskname [file]*\n" % sys.argv[0])
  26. sys.exit(1)
  27. address = sys.argv[1]
  28. taskname = sys.argv[2]
  29. files = [a.replace("\\", "/") for a in sum([glob.glob(f) for f in sys.argv[3:]], [])]
  30. main(address, taskname, files)