首先使用multiprocessing的Pool进程池
pool=Pool(最大的进程数)
然后添加多个需要执行的进程,可以大于上面设置的最大进程数,会自动按照特定的队列顺序执行
result = pool.apply_async(要执行的函数名 , args=元组形式的参数列表)
函数的返回值为 result.get()
close和join一下
pool.close()
pool.join()
注意:调用的函数如果有异常产生是不会报错的,而是会跳过错误。一定要考虑到可能报错的地方,添加异常处理的内容。
from multiprocessing import Pool
import multiprocessing as mp
import os
import time
def add(a,b):
t0=time.time()
t00=time.strftime("%Y-%m-%d %H:%M:%S")
s=0
for i in range(100000000):
s=s+i+a+b
t1=time.time()
t11=time.strftime("%Y-%m-%d %H:%M:%S")
print("开始时间:%s, 结束时间:%s"%(t00,t11))
#print("用时:%.2fs result:%s,pid:%s"%(t1-t0,s,str(os.getpid())))
def simpleAdd(a):
return a+222
if __name__=="__main__":
print("root process: %s"%os.getpid())
su=0
cpu_num=mp.cpu_count()
pool=Pool(cpu_num)
for i in range(cpu_num):
#pool.apply_async(add,args=(i,i))
x=pool.apply_async(simpleAdd, args=(i, ))
su+=x.get()
pool.close()
pool.join()
print(su)