1) 我已经读过,如果我在 python 中导入线程模块,CPU 绑定负载不会从使用这个库中看到太多好处,因为即使我在多核机器上运行代码,GIL 也会强制线程一次运行 1 个. 如果是这种情况,什么样的代码会从使用 Python 的线程库中受益?
2)如果线程库是这种情况,那么并行执行CPU密集型任务,例如两个信号的互相关,多处理模块是最好的模块吗?
为了更具体,假设我要并行化的任务是以下代码中的 for 循环,而我的机器只有 12 个内核。假设我的模板的长度约为 1000,图像的长度约为 2000,并且我有 ~1000 个信号要排序:
import numpy as np
###2-D array of shape (points, signals)
signals = np.load('signals.npy')
###1-D template array for cross correlation
templateSignal = np.load('template.npy')
for s in range(signals.shape[2]):
xcorr = np.correlate(templateSignal, signal[:,s])