-
- from Queue import Queue
- from multiprocessing import Process
-
- class Multiprocess(object):
- """Cute decorator to run a function in multiple processes."""
- def __init__(self, func):
- self.func = func
- self.processes = []
-
- def __call__(self, *args, **kwargs):
- num_processes = kwargs.get("multiprocess_num_processes", 2) # default to two processes.
- return_obj = kwargs.get("multiprocess_returnable", Queue()) # default to stdlib Queue
- for i in xrange(num_processes):
- def returning_wrapper(*args, **kwargs):
- kwargs.get("multiprocess_returnable").put(self.func(*args, **kwargs))
- pro = Process(target=returning_wrapper, args=args, kwargs=kwargs)
- self.processes.append(pro)
- pro.start()
-
- @Multiprocess
- def info():
- print title
- print 'module name:', __name__
- print 'parent process:', os.getppid()
- print 'process id:', os.getpid()
-
- info()
-