gpt4 book ai didi

python - 我如何在 python 中使用 multiprocessing.Pool.map 来处理对象中的函数?

转载 作者:行者123 更新时间:2023-12-02 04:55:39 25 4
gpt4 key购买 nike

我正在尝试使用 multiprocessing.Pool 来并行化对一组类对象的操作。

obj= []
for i in range(20):
obj.append(myClass(i))
pool= multiprocessing.Pool(processes=4)
pool.map(do_something, obj)
pool.map(do_something_else, obj)

而 myClass 及其函数 do_something 和 do_something_else 是这样的..
class myClass:
def __init__(self,i):
self.obj_id= i
self.value= 0

def do_something():
self.value = self.value + 1 #some operations

def do_something_else():
self.value = self.value * 99 #some operations

我该如何进行这种并行化? obj 中原始对象的“值”会更新吗?任何人都可以帮我解决问题吗?提前致谢。

最佳答案

map function 不会调用对象列表上的方法,而是调用每个对象作为第一个参数的函数。

因此,您需要一个辅助函数:

def _call_do_something(obj):
obj.do_something ()
return obj

# ...
obj_list = pool.map(_call_do_something, obj_list)

因为这将产生一个需要查找 _call_do_something 的新进程。通过导入(至少在 Windows 上),使其成为模块级函数。

关于python - 我如何在 python 中使用 multiprocessing.Pool.map 来处理对象中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22652836/

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