多进程中变量的总和



我在多处理中使用以下类模板:

class MyClass
def __init__(self):
self.some_counter = 0
def use_this_class(self, input):
if some_function(input):
self.some_counter += 1

由于每个进程接收其他input变量,因此self.some_counter的值对于不同的进程是不同的。当我在执行过程中打印它时,我可以看到所有进程的打印,例如:

6
7
8
4
5
6
9
10

我想在打印前将进程之间的self.some_counter值相加。我不喜欢使用进程之间共享的全局变量,因为它可能会增加执行时间。相反,我希望每N(非常大)次调用self.use_this_class就对这些值求和一次。

我该怎么做?

谢谢。

不需要使用共享内存或托管对象,也不需要使用全局变量(无论如何,全局变量不能在进程之间共享)。事实上,我根本不会为MyClass类操心,因为不会保留任何状态。只需使用一个简单的函数,根据some_function返回的内容返回0或1,然后将所有结果值相加。例如,

def some_function(x):
return x % 2
def worker(x):
return 1 if some_function(x) else 0
# Required for Windows
if __name__ == '__main__':
from multiprocessing import Pool
pool = Pool()
print(sum(pool.map(worker, range(20))), 'calls to some_function returned True')
pool.close()
pool.join()

打印:

10 calls to some_function returned True

相关内容

  • 没有找到相关文章

最新更新