python 代码问题求教

2015-04-17 19:18:05 +08:00
 nettest

代码v2ex不显示格式,我传了个图。: http://ww3.sinaimg.cn/mw1024/005R8CzCjw1er8sbmqqpfj30cl09yq3r.jpg

from multiprocessing import Pool

def openit(i,data1):
print i
data1.append(i)
if name=='main':
data=['a','b','c','d','e','f']
data1=[]
print 'Start!'
p = Pool(6)
for i in data:
p.apply_async(openit, args=(i,data1))
p.close()
p.join()
print 'Done',data1

这个代码为什么输出的data1是空的
执行结果:Start!
a
b
c
e
d
f
Done []

2561 次点击
所在节点    Python
4 条回复
xanpeng
2015-04-18 00:38:18 +08:00
python进程间变量共享问题,参考这篇文章“浅谈 python multiprocessing(多进程)下如何共享变量”(http://my.oschina.net/leejun2005/blog/203148),以及其中相关链接。
nettest
2015-04-18 05:31:09 +08:00
@xanpeng 好哒\(^o^)/,的确是变量问题。
nettest
2015-04-18 07:01:43 +08:00
@xanpeng Manager是否只能在linux下运行?测试了给的链接里的第一个代码,结果win报错,linux正常。
xanpeng
2015-04-20 13:35:26 +08:00
@nettest 这个我实际也少用到,应该不是只适用linux吧,毕竟python是跨平台的,且文档(https://docs.python.org/2/library/multiprocessing.html#managers)也没有提到不适用win。
win报错得你自查了,我没有win环境。不过manager貌似非唯一方法,可试试其他的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/184414

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX