我有以下代码:
import multiprocessing
manager = multiprocessing.Manager()
如果列表的长度小于 4,则附加列表或创建一个具有初始值 'y' 的新列表的函数。
def f(my_array):
if len(my_array) < 4:
my_array.append('x')
else:
my_array = ['y']
print(my_array)
列表的初始化和创建过程。
if __name__ == '__main__':
my_array = manager.list(['a', 'b', 'c'])
p1 = Process(target=f, args=(my_array))
p2 = Process(target=f, args=(my_array))
p3 = Process(target=f, args=(my_array))
p4 = Process(target=f, args=(my_array))
p5 = Process(target=f, args=(my_array))
p1.start()
p2.start()
p3.start()
p4.start()
p5.start()
p1.join()
p2.join()
p3.join()
p4.join()
p5.join()
我得到的输出:
['a', 'b', 'c', 'x']
['y']
['y']
['y']
['y']
我不明白为什么列表只附加一次。我希望在第三个输出行中我会观察到列表 ['y'] 附加了 'x',所以 ['y', 'x'],第四个 ['y', 'x', 'x']等等。似乎共享内存泄漏或不允许多个进程的函数进行更改。我该怎么做才能实现目标行为?
人到中年有点甜
慕桂英4014372
随时随地看视频慕课网APP
相关分类