gpt4 book ai didi

python - 无法使用 pool.apply_async()

转载 作者:行者123 更新时间:2023-12-02 01:34:25 29 4
gpt4 key购买 nike

我只是在使用 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.apply_async(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34947162/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com