基于python的多进程共享变量正确打开方式


本文摘自php中文网,作者不言,侵删。

下面为大家分享一篇基于python的多进程共享变量正确打开方式,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧

多进程共享变量和获得结果

由于工程需求,要使用多线程来跑一个程序。但是因为听说python的多线程是假的,于是使用多进程,反正任务需要共享的参数少。

查阅资料,发现实现多进程主要使用Multiprocessing,有两种方式,一种是Process,另一种是Pool。


1

p = Process(target=fun,args=(args))


再通过p.start()来启动一个子进程,通过p.join()方法来使得子进程运行结束后再执行父进程。

但是这样很烦,还要写个for 循环来开n个线程和join。

于是推荐用Pool。它可以开一个固定大小的进程池,然后每个线程执行apply_async()函数调用要执行的函数,最后再close和join。

代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

pathm=Manager().Queue(len(pathlist))

for d in pathlist:

 pathm.put(d)

p=Pool(cp.threads)

results=[]

for i in range(cp.threads):

 temp=p.apply_async(ProcessWorker,args=(i,pathm,cp))

 results.append(temp)

print 'Waiting for all subprocesses done...'

p.close()

p.join()

print 'All subprocesses finish Processing.'

results=[r.get() for r in results]


阅读剩余部分

相关阅读 >>

Python可以做app么

Python爬虫获取图片并下载保存至本地

关于Python中布局操作以及模块结构的详解

Python安装到哪个盘

Python需要配置环境变量吗

Python编程语言是什么

Python怎么安装有setup.py的包

Python怎么批量注释

Python 中正则表达式详解

Python setup.py install是什么意思

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...