1)Pythonでスレッドモジュールをインポートすると、マルチコアマシンでコードを実行している場合でも、GILによってスレッドが一度に1つずつ実行されるため、CPUバウンドロードはこのライブラリを使用してもあまりメリットがないことを読みました。 。この場合、Pythonのスレッドライブラリを使用するとどのようなコードがメリットになりますか?
2)スレッドライブラリの場合、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])