在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ 子進程process為什么把第三行的print也給打印出來了?

子進程process為什么把第三行的print也給打印出來了?

from multiprocessing import Process
import os
print(os.getpid())

def run_proc(name):

print('Run child process %s (%s)...' % (name, os.getpid()))

if __name__=='__main__':

p = Process(target=run_proc, args=('test',)) 
p.start() 

輸出結果:
7196
8232
Run child process test (8232)...

回答
編輯回答
野橘

剛才有回復一個很相似的問題, 這個原因完全就是因為windows自身實現的問題, 在linux下只會打印一次, 而那次是主進程執(zhí)行的.

clipboard.png

詳情可以參考我的文章: Python: Windows下用multiprocessing的深坑

2017年5月26日 18:16
編輯回答
裸橙
from multiprocessing import Process 
import os 

a = 1

def run_proc(name):
    print(a)
    print(__name__)
    print('Run child process %s (%s)...' % (name, os.getpid()))
    
if __name__=='__main__': 
    a = 2
    p = Process(target=run_proc, args=('test',)) 
    p.start() 
    #p.join()等待子進程結束
    print(a)

由于沒有p.join所以等主進程結束后,子進程自動執(zhí)行,2比1先打印
子進程相當于運行當前文件,只不過name值變更

from multiprocessing import Process 
import os 

a = 1

if __name__=='__mp_main__': 
    print('child process')

def run_proc(name):
    print(a)
    print(__name__)
    print('Run child process %s (%s)...' % (name, os.getpid()))
    
if __name__=='__main__': 
    a = 2
    p = Process(target=run_proc, args=('test',)) 
    p.start() 
    #p.join()
    print(a)

這樣好理解么?

2018年7月12日 13:17