gpt4 book ai didi

python - 使用多进程附加到实例列表

转载 作者:太空宇宙 更新时间:2023-11-04 10:24:05 24 4
gpt4 key购买 nike

我有一个类,其中有一个属性列表。实例化该类后,我想进行一些计算,然后将结果(本身就是列表)附加到列表中。我正在尝试使用 multiprocess 来加速计算/追加,因为顺序无关紧要。以下是一个简化的示例:

import multiprocessing as mp

class Test(object):
def __init__(self):
self.basis = []

def action(self, i):
self.basis.append([i])

def test(self):
for i in xrange(5):
self.action(i)
print(self.basis)

def test_mp(self):
jobs = []
for i in xrange(5):
job = mp.Process(target=self.action, args=(i,))
jobs.append(job)
job.start()
for j in jobs:
j.join()
print(self.basis)

Test().test()
# Returns correct list
Test().test_mp()
# Returns empty (incorrect) list

我的方法似乎只适用于不尝试并行运行(适用于 test,但不适用于 test_mp)。我很确定 test_mp 没有工作,因为每个进程都没有共享它自己的 self.basis 版本,但我不确定如何克服这个问题。我研究过使 self.basis 成为 mp.Array,但失败了,因为我试图附加列表,而不仅仅是数字。我发现了其他几个类似的问题,但是当尝试在这样的类中使用他们的解决方案时,他们的答案似乎崩溃了(酸洗错误等)

最佳答案

你可以使用 Manager

import multiprocessing as mp

class Test(object):
def __init__(self):
self.basis = mp.Manager().list()

输出:

[[0], [3], [1], [4], [2]]

关于python - 使用多进程附加到实例列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30518430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com