[英]Multiprocessing nested python loops
为了改善有一个沉重循环的代码,我需要加快速度。 如何为这样的代码实现多重处理? (a通常为2号,l为10)
for x1 in range(a**l):
for x2 in range(a**l):
for x3 in range(a**l):
output[x1,x2,x3] = HeavyComputationThatIsThreadSafe1(x1,x2,x3)
如果HeavyComputationThatIsThreadSafe1
函数仅使用数组而不是python对象,则我将在发布GIL的同时使用并发的 Future (或python2 backport ) ThreadPoolExecutor
以及Numba (或cython )。 否则,请使用ProcessPoolExecutor
。
看到:
http://numba.pydata.org/numba-doc/latest/user/examples.html#multi-threading
您需要在最外面的循环级别并行化计算,然后填充每个线程/进程产生的块的output
。 假设这样做的成本比计算便宜得多,应该是这种情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.