首页 > 解决方案 > 如何在python中并行化类方法?

问题描述

我有一个带有方法的类foo(),以及dictionary带有该类的一堆对象的类。

如何foo()在我的对象集合中并行执行 ?

class MyClass:
    def __init__(self,a):
        self.a = a
    def foo():
        self.a+=1
        
if __name__ == "__main__":
    
    #get a dictionary full of independent objects
    dic={}
    for kk in range(10):
        dic[kk]=MyClass(kk)
    
    #execute foo on each object. 
    #How to do it in a parallel way?
    for myObject in dic.values():
        myObject.foo()

pd:这可能是一个愚蠢的问题,在其他编程语言中非常简单,但是我在互联网上进行了谷歌搜索,并没有找到任何直接的解决方案。

标签: pythonparallel-processingparallelism-amdahl

解决方案


您没有提供代码示例,所以我会给您一些伪代码,但这应该让您了解如何解决它:

from multiprocessing import Pool

class myClass:
    def foo(x):
        # Do your processing here
        return x

if __name__ == "__main__":

    # Your dictionary here
    some_dict = {"key1": {}, "key2": {}}

    # Create an instance of your class
    my_class = MyClass()

    # Create a pool of workers
    with Pool(5) as p:
        p.map(my_class.foo, [obj for obj in some_dict.values()])

推荐阅读