1 #多進程 process.py 2 from multiprocessing import Process,current_process 3 import time 4 def func1(): 5 print('ahhahaah func1') 6 time.sleep(10)#睡眠10s 7 8 def func2(): 9 print('heiheihei func2') 10 time.sleep(10)#睡眠10s 11 12 def func3(): 13 print('lalalalll func3') 14 time.sleep(10)#睡眠10s 15 def main(): 16 17 p1 = Process(target = func1,name = 'func 1 ')#這里就當新打開了頁面執行函數 18 p2 = Process(target = func2,name = 'func 2 ')#這里就當新打開了頁面執行函數 19 p3 = Process(target = func3,name = 'func 3 ')#這里就當新打開了頁面執行函數 20 list1 = [p1,p2,p3] 21 print('這是 主進程 ') 22 for a in list1: 23 a.start() 24 25 if __name__ == '__main__': 26 main() 27 28 29
主進程會創建子進程 但是他們輸出不會輸出在一起
-
舉個例子 比如說 我在父進程開啟了3個子進程 那三個子進程
就當做打開了三個運行界面運行,然后輸出結果不會在一起的
因為他們加上父進程一共是4個窗口在運行
那為什么在sublime text下 會延遲輸出 而在cmd模式下會直接輸出呢
-
因為sublime會有自己的緩沖區,我們數據輸入輸出都是有一個緩沖區的
就像c語言里面有輸入輸出流一樣,sublime里面就是,它另外三個子進程
輸出完成之后會放在輸出緩沖區里面,然后輸出在父進程的輸出界面,所以
會延遲輸出,這是編譯器導致的結果,正常情況下是看不到子進程的輸出
結果的
-
而cmd模式下,父進程和子進程都是用的一個空間,不用等另外三個子進程
運行完成之后再把要輸出的東西放在輸出流里面,就可以直接輸出出來,所以
輸出的時候會直接彈出來,而不用等待一會
-