mutltiprocessing
パッケージを使用して、関数内で複数の CPU を使用しようとしています。関数の外でおもちゃの例を実行すると、問題なく 1/4 秒で実行されます (以下を参照)。
from multiprocessing import Pool
import time
start = time.clock()
def f(x):
return x*x
if __name__ == '__main__':
with Pool(processes=7) as pool:
result = pool.map(f, range(1000))
print(time.clock() - start)
ただし、同じコードを関数に適用すると (以下を参照)、そのことTrue
を示すために出力されますが__name__ == '__main__'
、その後は永久に実行され、結果を返すことはありません。Windows 7 で Python 3.3 を実行しています。
from multiprocessing import Pool
import time
start = time.clock()
def f(x):
return x*x
def testfunc(r):
if __name__ == '__main__':
print(True)
with Pool(processes=7) as pool:
result = pool.map(f, range(r))
return result
result = testfunc(1000)
print(time.clock() - start)