[英]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.