【发布时间】:2020-07-13 01:25:08
【问题描述】:
我有一个这样的测试代码:
import numpy as np
from numba import njit, prange
import random
def func():
a = np.empty(0)
for i in range(10):
b = np.arange(np.random.randint(10))
a = np.concatenate((a, b))
print(len(b), ' / ', len(a))
func()
它按预期工作:
3 / 3
6 / 9
5 / 14
8 / 22
9 / 31
6 / 37
9 / 46
5 / 51
3 / 54
9 / 63
如果我通过添加 @njit(parallel=True) 装饰器来使用 Numba 进行编译,它会停止工作,因为 Numba 会并行化这个导致问题的循环:
2 / 0
1 / 0
2 / 0
7 / 0
0 / 0
3 / 0
2 / 0
5 / 0
7 / 0
2 / 0
在我的真实代码中,此函数中还有另一个使用 prange 的循环,因此我希望在整个函数上使用 parallel=True。但我不想在这个循环中使用它。
如何预防?
【问题讨论】:
标签: python python-3.x parallel-processing numba