我正在尝试使用该mutltiprocessing
包在一个函数中使用多个 CPU。当我在函数之外运行一个玩具示例时,它会在四分之一秒内运行,没有任何问题(见下文)。
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)