python 多進程和子進程1


多進程的緩沖區

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

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

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

  •  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM