我实现了小型统计功能,并通过多处理进行并行化。 代码的总体结构如下所示:
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()方法。我想这种方法可能效率很低。用函数替换类更好吗?或者使用这样的类不会影响多处理性能?
答案 0 :(得分:0)
它效率不高(它不会影响性能),它只是非正统的。如果你从bootstrap
中取出Stat
,它可能会更清洁,因为它看起来不像是作为该类的方法而受益。
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...