我在运行一些使用多处理库的python代码时注意到了奇怪的行为 . 这一切都在Windows下,可能是Windows的东西,但也许有人可以解释发生了什么 .

如果我创建一个简单的python脚本并创建一个如下所示的池:

import multiprocessing

pool = multiprocessing.Pool()
print "made a pool"

while True:
    pass

当我运行脚本时,我看到"made a pool"打印了8次,这是 Pool() 创建的默认进程数,因为我的机器上有8个核心 .

当我将脚本更改为如此:

import multiprocessing

def run():
    pool = multiprocessing.Pool()
    print "made a pool"

    while True:
        pass


if __name__ == '__main__':
    run()

我看到“制作了一个游泳池”一次打印 - 这是我在两种情况下所期望的 .

我想我通常会使用函数中的多处理库来运行任何代码,但是在单个python文件中使用某些代码时会被这个代码捕获 . 谁知道为什么会这样?