@njit(parallel=True)当使用 Numba 库中的装饰器运行函数时,我试图限制活动 CPU 核心的数量。
到目前为止,我已经做了这样的事情(示例):
from numba import njit, prange, set_num_threads
import numpy as np
@njit(parallel=True)
def func():
for i in prange(int(1e10)):
print(np.cos(i))
if __name__ == '__main__':
num_threads = input(f'Enter max number of threads to use: ')
set_num_threads(int(num_threads))
func()
Run Code Online (Sandbox Code Playgroud)
但即使将线程数设置为 1,使用任务管理器进行快速检查显示工作负载仍然由所有核心共享(在我的例子中为 4)。
在下面的屏幕截图中可以看到这一点。红色圆圈表示程序启动和中断的时间。
有没有更好的方法来限制活动核心的数量?