spacepaste

  1.  
  2. from Queue import Queue
  3. from multiprocessing import Process
  4. class Multiprocess(object):
  5. def __init__(self, func):
  6. self.func = func
  7. self.processes = []
  8. def __call__(self, *args, **kwargs):
  9. num_processes = kwargs.get("multiprocess_num_processes", 2) # default to two processes.
  10. return_obj = kwargs.get("multiprocess_returnable", Queue()) # default to stdlib Queue
  11. for i in xrange(num_processes):
  12. def returning_wrapper(*args, **kwargs):
  13. kwargs.get("multiprocess_returnable").put(self.func(*args, **kwargs))
  14. pro = Process(target=returning_wrapper, args=args, kwargs=kwargs)
  15. self.processes.append(pro)
  16. pro.start()
  17. @Multiprocess
  18. def info():
  19. print title
  20. print 'module name:', __name__
  21. print 'parent process:', os.getppid()
  22. print 'process id:', os.getpid()
  23. info()
  24.