繁体   English   中英

如何在python中使用multiprocessing.Pool.map实现对象中的功能?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM