1、使用进程的队列multiprocessing.Queue,put(),get()方法
子进程不需返回值,将目标结果放入队列中
在主进程中获取 get方法
打印值:
processname 1
processname 0
processname 2
processname 5
processname 8
processname 3
processname 4
processname 6
processname 9
processname 7
[22, 23, 17, 20, 24, 18, 22, 19, 22, 19]
2、使用Pool.map()
子进程需要返回值,主进程获取返回值的列表
3、使用pool.apply_async,子进程有返回值,主进程获取子进程返回的对象(非返回值),需使用get方法获取对象的值
from multiprocessing import Poolimport time def func(i): return i*i if __name__ == "__main__": print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) pool = multiprocessing.Pool(processes=8) # 创建4个进程 results = [] length = 5000 for i in xrange(8): results.append(pool.apply_async(func, (i,))) pool.close() # 关闭进程池,表示不能再往进程池中添加进程,需要在join之前调用 pool.join() # 等待进程池中的所有进程执行完毕 print ("Sub-process(es) done.") k = 0 for res in results: k += res.get() print k