本帖最后由 bangbang-ande 于 2020-8-6 12:21 编辑
我觉得应该是这样的:
首先主进程执行了:# Initialization phase
print('Initialize', os.getpid(), os.getpid())
print(__name__, os.getpid(), os.getpid())
然后执行了之后就进入判断是否是主进程
接着生成子进程,进行执行
而子进程同时执行了两个部分:
1:v函数:def v():
print('Run', os.getpid())
print(__name__, os.getpid())
2:# Initialization phase# Initialization phase
print('Initialize', os.getpid(), os.getpid())
print(__name__, os.getpid(), os.getpid())
但由于时间原因,所以看到的次序反过来了,先看到了2的结果,然后看到1的结果(2和1指上边两段程序)
而处理方法是直接把# Initialization phase
print('Initialize', os.getpid(), os.getpid())
print(__name__, os.getpid(), os.getpid())
移到if __name__ == '__main__':
# 把Initialization phase这段代码移到这
p = mp.Process(target=v)
p.start()
p.join()
里边
就应该是这样:import multiprocessing as mp
import os
# Run phase
def v():
print('Run', os.getpid())
print(__name__, os.getpid())
# Initialization phase
if __name__ == '__main__':
print('Initialize', os.getpid(), os.getpid())
print(__name__, os.getpid(), os.getpid())
# start a new Process to execute function `v` and wait for it
p = mp.Process(target=v)
p.start()
p.join()
(我没学那么透,但分析了代码,应该是这样。。。)
没错的话记得设置为最佳答案 |