本文摘自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如何判断是否为整数
Python字符串如何转化为列表
Python可以单片机编程吗
Python卸载模块的方法汇总
Python简介及入门指导
Python标准库有哪些
Python一键搭建http服务器的方法
Python与access选哪个
Python如何打印出菱形与三角形以及矩形的代码示例分享
关于Python方法无法在线程中使用的解决办法
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » 基于python的多进程共享变量正确打开方式