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

鍍金池/ 問答/Python/ python的process對象使用start()后為什么輸出全局語句?

python的process對象使用start()后為什么輸出全局語句?

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',)) 
print(os.getpid()) 
p.start() 

輸出結(jié)果:
8488
8488
8292
Run child process test (8292)...
為什么加了第三行的語句后會(huì)多輸出一行子進(jìn)程pid(8292)

回答
編輯回答
陪她鬧

old answer

因?yàn)?code>Process 在linux下是通過fork形式實(shí)現(xiàn)的, 代碼都被復(fù)制到子進(jìn)程中, 所以在Process(target=run_proc, args=('test',)) 之后的代碼, 都會(huì)順序依次執(zhí)行..

new answer

你這個(gè)代碼應(yīng)該是在Windows下執(zhí)行的, 因?yàn)?code>Windows和unix/linux實(shí)現(xiàn)多進(jìn)程的方式不相同, Windows會(huì)在創(chuàng)建新進(jìn)程是, 再載入一次此模塊:

clipboard.png

unix/linux則無此問題

2018年3月19日 10:44