import multiprocessing as mp
from time import sleep
import os
def work(msg):
sleep(2)
print(msg)
return 'worker return' + msg #为函数调用返回相关值
if __name__ == '__main__':
pool = mp.Pool(processes = 4)
result = []
for i in range(10):
msg = "hello %d"%i
r = pool.apply_async(work,(msg,))#向进程池中加入要执行的事件
result.append(r)
#关于多线程执行的时候返回值是有序的原因说明:因为多线程只是执行的时候顺序是无序的,但是加入时是用for 有序插入,返回的对象在for的每次循环中顺序插入新列表,所以也是有序的。
for res in result:
print(res.get())
pool.close() #关闭进程池事件加入通道,即不能再向进程池中加入事件
pool.join() #阻塞等等进程池处理事件结束后回收进程池
|