使用 multiprocessing.pool.Pool 初始化并行处理无限期冻结
Using multiprocessing.pool.Pool to initialize parallel processing freezes indefinitely
我目前正在尝试 运行 从 anaconda 中的 spyder 控制台并行化代码。我认为问题可能出在我的计算机不允许 anaconda 控制 CPU 核心,但我不确定如何解决此问题。
另一个有趣的点是,当我 运行 一个异步示例时,但是当我尝试生成结果时,我收到了同样的问题。
我已经尝试了多个应该有效的简单示例。没有包加载错误
from multiprocessing.pool import ThreadPool, Pool
def square_it(x):
return x*x
# On Windows, make sure that multiprocessing doesn't start
# until after "if __name__ == '__main__'"
with Pool(processes=5) as pool:
results = pool.map(square_it, [5, 4, 3, 2 ,1])
print(results)
我希望我的代码能够完成所有代码。
此代码旨在 运行 square_it
在 5 个不同的进程中并行
def square_it(x):
return x*x
with Pool(processes=5) as pool:
results = pool.map(square_it, [5, 4, 3, 2 ,1])
print(results)
它的作用是创建 5 个新进程,然后在每个进程中加载相同的 python 模块并调用函数 square_it
。
在 5 个子进程之一中导入模块时发生的事情与最初在主进程中加载时发生的事情相同:它创建另一个 Pool
5 个子进程,无限期地这样做.
为避免这种情况,您必须确保子进程不会递归地创建越来越多的子进程。您可以通过仅在 "main" 模块中创建子流程来做到这一点,又名 "__main__"
:
def square_it(x):
return x*x
if __name__ == "__main__":
with Pool(processes=5) as pool:
results = pool.map(square_it, [5, 4, 3, 2 ,1])
print(results)
我目前正在尝试 运行 从 anaconda 中的 spyder 控制台并行化代码。我认为问题可能出在我的计算机不允许 anaconda 控制 CPU 核心,但我不确定如何解决此问题。
另一个有趣的点是,当我 运行 一个异步示例时,但是当我尝试生成结果时,我收到了同样的问题。
我已经尝试了多个应该有效的简单示例。没有包加载错误
from multiprocessing.pool import ThreadPool, Pool
def square_it(x):
return x*x
# On Windows, make sure that multiprocessing doesn't start
# until after "if __name__ == '__main__'"
with Pool(processes=5) as pool:
results = pool.map(square_it, [5, 4, 3, 2 ,1])
print(results)
我希望我的代码能够完成所有代码。
此代码旨在 运行 square_it
在 5 个不同的进程中并行
def square_it(x):
return x*x
with Pool(processes=5) as pool:
results = pool.map(square_it, [5, 4, 3, 2 ,1])
print(results)
它的作用是创建 5 个新进程,然后在每个进程中加载相同的 python 模块并调用函数 square_it
。
在 5 个子进程之一中导入模块时发生的事情与最初在主进程中加载时发生的事情相同:它创建另一个 Pool
5 个子进程,无限期地这样做.
为避免这种情况,您必须确保子进程不会递归地创建越来越多的子进程。您可以通过仅在 "main" 模块中创建子流程来做到这一点,又名 "__main__"
:
def square_it(x):
return x*x
if __name__ == "__main__":
with Pool(processes=5) as pool:
results = pool.map(square_it, [5, 4, 3, 2 ,1])
print(results)