1. 程式人生 > >python 多進程和子進程1

python 多進程和子進程1

執行函數 cmd 語言 process imp style nbsp mark ext

多進程的緩沖區

 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模式下,父進程和子進程都是用的一個空間,不用等另外三個子進程

    運行完成之後再把要輸出的東西放在輸出流裏面,就可以直接輸出出來,所以

    輸出的時候會直接彈出來,而不用等待一會

python 多進程和子進程1