【发布时间】:2019-12-06 18:56:42
【问题描述】:
from concurrent import futures
class MyClass:
def __init__(self):
self.mylist = []
def test(self, i):
self.mylist.append(i)
myclass = MyClass()
print(myclass.mylist)
ilist = [1, 2, 3, 4]
for i in ilist:
myclass.test(i)
print(myclass.mylist)
myclass.mylist = []
with futures.ProcessPoolExecutor() as pool:
for null in pool.map(myclass.test, ilist):
pass
print(myclass.mylist)
输出:
[]
[1, 2, 3, 4]
[]
为什么将def test 中的值附加到self.mylist 可以在常规循环中工作,但在使用期货时却不行?使用期货时如何允许追加功能?
【问题讨论】:
-
因为您使用的是多个进程,其中不共享状态