python多进程反而慢_python 3.6 多进程的坑_weixin_39625337的博客-CSDN博客
一定要注意多线程的输入参数的方式
如何获取结果呢,一定不能直接在pool.apply_async后面加get,这样相当于,你开一进程就要结果,就会直接阻塞,等返回了get才会开下一个。
所以先用一个容器把所有pool的返回装起来,然后等pool跑完了,在去pool取结果
from multiprocessing import Pool
res=[]
pool = Pool(4)
print('开始多进程')
a=time.time()
res=[]
for i in st_lst:
res.append(pool.apply_async(func=get_trees, args=(,))
pool.close()
pool.join()
#再去取结果
for i in res:
trees.append(i.get())
res.append(pool.apply_async(func=get_trees, args=(,).get())
这个get就不行了,会阻塞的
两点,pool里面怎么放参数,get不能直接放poolapply后面
这里再说一下多进程怎么运行,首先要知道if __name__是干什么的,
if下面是不会被运行的。
我们对一个函数开了多进程,系统会把这个整个py文件除了if以及上面的非def 内容都运行一遍,但后再运行pool里面的那个函数,所以一切不必要的变量,都要写在if里面,一面多进程都运行出来了