1)我读过如果我在python中导入线程模块,使用这个库的CPU绑定加载看不到太多好处,因为GIL强制线程在即使我在多核机器上运行代码也是如此。如果是这种情况,那么使用Python的线程库会使哪些代码受益? 2)如果线程库就是这种情况,那么并行执行CPU密集型任务(例如两个信号的交叉关联)是多处理模块最适合使用的模块吗?使用线程/线程模块的好处python 2.7
为了使这个更具体一些,让我们说我想要并行化的任务是以下代码中的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])
你有基准吗? – 2012-07-19 19:59:40
注意:C扩展可以释放GIL,但它们不会触摸Python对象,例如,某些numpy函数会释放GIL。 – jfs 2012-07-19 20:36:34