import threading
import multiprocessing.dummy as mt
import numpy as np
if __name__ == '__main__':
n = 6
a = np.zeros((n, n))
def f(i, j):
a[i, j] = i + j
with mt.Pool() as pool:
r = pool.starmap_async(f, ((i, j) for i in range(n) for j in range(n)))
r.wait()
print(a)
上記スニペットは、r.wait()
でブロックされます。`Pool。* _ async`関数は決して準備ができません
import threading
import multiprocessing.dummy as mt
import numpy as np
if __name__ == '__main__':
n = 6
a = np.zeros((n, n))
def f(i, j):
a[i, j] = i + j
with mt.Pool() as pool:
pool.starmap(f, ((i, j) for i in range(n) for j in range(n)))
print(a)
にそれを変更した場合でも、a
の内容をすぐに印刷されます。では、最初のスニペットのr
が決して準備ができていないのはなぜですか? (Pythonバージョン:Python 3.6.2 :: Anaconda custom (64-bit)
、Linux)