Python,带类的多处理

2024-04-20 14:37:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我实现了小的统计函数,并通过多处理并行化。 代码的总体结构如下所示:

def worker(args, no):
    f = Stat.fit(args)
    return f.result

class Stat:
    def fit(self):
        doing various things...

    def bootstrap(self):
        p = mp.Pool(mp.cpu_count())
        parameter = ... #set parameters for Stat
        worker = functools.partial(worker, parameter)

        for i, _ in enumerate(p.imap_unordered(worker, range(1000))):
            pass

所以,Stat类中的bootstrap方法调用运行函数的进程,该函数创建Stat类的实例并运行fit()方法。我想这种方法可能效率很低。用函数代替类更好吗?或者像这样使用类不会影响多处理性能?你知道吗


Tags: 方法函数代码selfforparameterdefargs
1条回答
网友
1楼 · 发布于 2024-04-20 14:37:25

它不是低效的(它不会影响性能),它只是非正统的。如果将bootstrapStat中去掉,它可能会更干净一些,因为它看起来不像是该类的方法带来的好处。你知道吗

def worker(args, no):
    f = Stat.fit(args)
    return f.result

def bootstrap(self):
    p = mp.Pool(mp.cpu_count())
    parameter = ... #set parameters for Stat
    worker = functools.partial(worker, parameter)

    for i, _ in enumerate(p.imap_unordered(worker, range(1000))):
        pass

class Stat:
    def fit(self):
        doing various things...

相关问题 更多 >