无法使用 pool.apply_async()
Not able to use pool.apply_async()
我只是在使用 Python 的多处理模块,但是 下面的代码是 运行 连续但没有给出任何输出。我究竟做错了什么?我也试过 pool.close()
和 pool.join()
但没有效果。
这是我目前尝试过的方法:
import multiprocessing as mp
cpu_count = mp.cpu_count()
pool = mp.Pool(processes = cpu_count)
def func(val):
print "\nInside Function.....\n"
return val*val
results = []
num = 1
while cpu_count >= 1:
results.append(pool.apply_async(func, (num,)))
cpu_count = cpu_count - 1
num = num + 1
output = [p.get() for p in results]
print output
用
包装你的代码
if __name__ == '__main__':
...
由于多处理实现,如果您在 windows 下工作,则有必要。
以下代码按您的预期打印 [1, 4, 9, 16]:
import multiprocessing as mp
def func(val):
print "\nInside Function.....\n"
return val*val
if __name__ == '__main__':
cpu_count = mp.cpu_count()
pool = mp.Pool(processes = cpu_count)
results = []
num = 1
while cpu_count >= 1:
results.append(pool.apply_async(func, (num,)))
cpu_count = cpu_count - 1
num = num + 1
output = [p.get() for p in results]
print output
pool.close()
pool.join()
注意池在程序退出前关闭 - 只是终止程序并不能保证池关闭,它的进程可以保留 运行。
我只是在使用 Python 的多处理模块,但是 下面的代码是 运行 连续但没有给出任何输出。我究竟做错了什么?我也试过 pool.close()
和 pool.join()
但没有效果。
这是我目前尝试过的方法:
import multiprocessing as mp
cpu_count = mp.cpu_count()
pool = mp.Pool(processes = cpu_count)
def func(val):
print "\nInside Function.....\n"
return val*val
results = []
num = 1
while cpu_count >= 1:
results.append(pool.apply_async(func, (num,)))
cpu_count = cpu_count - 1
num = num + 1
output = [p.get() for p in results]
print output
用
包装你的代码if __name__ == '__main__':
...
由于多处理实现,如果您在 windows 下工作,则有必要。
以下代码按您的预期打印 [1, 4, 9, 16]:
import multiprocessing as mp
def func(val):
print "\nInside Function.....\n"
return val*val
if __name__ == '__main__':
cpu_count = mp.cpu_count()
pool = mp.Pool(processes = cpu_count)
results = []
num = 1
while cpu_count >= 1:
results.append(pool.apply_async(func, (num,)))
cpu_count = cpu_count - 1
num = num + 1
output = [p.get() for p in results]
print output
pool.close()
pool.join()
注意池在程序退出前关闭 - 只是终止程序并不能保证池关闭,它的进程可以保留 运行。