我正在编写一个简单的脚本,它利用了多处理模块.我没有使用这个模块的经验,我只是试着了解如何使用它.然而,我遇到了一个令人困惑的行为,即脚本中的print语句被执行两次.
我的理解是,只要我直接运行脚本,if __main__
以下的代码就应该运行.而且,整个脚本应该按程序运行.我希望打印语句在if
块之前只运行一次.为什么要多次执行?我通常不使用这种模式来构建代码,所以我想知道是否有与使用if __main__
相关的行为我可能没有意识到.这只是一个正常的if
声明,就像其他任何一个."
我不知道这是怎么回事.有人能提供一些关于为什么会发生这种情况的见解吗?谢谢! 我运行的是Anacaonda-Spyder 5.4.3中的python3.11.3
import multiprocessing
print("TEST TEST TEST")
def square(x):
return x * x
if __name__ == '__main__':
numbers = [1, 2, 3, 4, 5]
with multiprocessing.Pool() as pool:
results = pool.map(square, numbers)
print(results)
结果:
TEST TEST TEST
[1, 4, 9, 16, 25]
TEST TEST TEST
TEST TEST TEST