![](/img/trans.png)
[英]How use multiprocessing.Pool.map with iterator and separat input for function
[英]how can i use multiprocessing.Pool.map in python for function in objects?
我正在尝试使用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
函数不调用对象列表上的方法,而是以每个对象作为第一个参数的函数。
因此,您需要一个辅助函数:
def _call_do_something(obj):
obj.do_something ()
return obj
# ...
obj_list = pool.map(_call_do_something, obj_list)
由于这将产生一个新进程,需要通过导入(至少在Windows上)才能找到_call_do_something
,因此使其成为模块级函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.