多处理跳过开始

Multi-processing skip beginning

我对 python 和多处理模块还很陌生。我想知道如何让这个过程跳过开头,这样它就不会重复。任何帮助将不胜感激:)

print("Doing something!!!")

代码:

import multiprocessing

print("Doing something!!!")

def stuff():
    print("Doing stuff")

if __name__  == '__main__':
    p1 = multiprocessing.Process(target=stuff)
    p1.start()

输出:

Doing something!!!
Doing something!!!
Doing stuff

期望的输出:

Doing something!!!
Doing stuff

请参阅文档中的 multiprocessing Programming Guidelines

在使用“spawn”或“forkserver”方法创建进程的系统上:

Make sure that the main module can be safely imported by a new Python interpreter without causing unintended side effects (such a starting a new process).

您的脚本正在导入到每个进程中,因此它将 运行 所有进程中的任何全局代码。只需将任何全局内容移动到 if __name__ == '__main__': 部分:

import multiprocessing

def stuff():
    print("Doing stuff")

if __name__  == '__main__':
    print("Doing something!!!")
    p1 = multiprocessing.Process(target=stuff)
    p1.start()

这确保函数 stuff() 将在每个进程中导入和定义,但是您的 print 只会在主进程中 运行 一次。