我用python将多个并行进程写入一个列表中。我的代码是:
global_list = []
class MyThread(threading.Thread):
...
def run(self):
results = self.calculate_results()
global_list.extend(results)
def total_results():
for param in params:
t = MyThread(param)
t.start()
while threading.active_count() > 1:
pass
return total_results
我不喜欢这种说法:
1-使用在所有Worker实例之间共享的类变量来附加结果
2-使用join()等待所有线程完成,并让它们有一些计算时间
^{pr2}$你的计算是CPU密集型的吗?如果是这样的话,您应该看看Python中包含的多处理模块,它提供了一个非常易于使用的Pool类,您可以将计算任务输入其中,然后获得所有结果。如果您需要大量的CPU时间,那么无论如何这会更快,因为Python并不能很好地处理线程:一个进程中一次只能运行一个解释器线程。多处理回避了(并提供了池抽象,使您的工作更容易)。哦,如果你真的想坚持线程,多处理也有一个线程池。在
相关问题 更多 >
编程相关推荐