繁体   English   中英

多处理跳过开始

[英]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 编程指南

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

确保新的 Python 解释器可以安全地导入主模块,而不会导致意外的副作用(例如启动新进程)。

您的脚本被导入到每个进程中,因此它将在所有进程中运行任何全局代码。 只需将任何全局内容移动到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只会在主进程中运行一次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM