多处理跳过开始
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
只会在主进程中 运行 一次。
我对 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
只会在主进程中 运行 一次。