多任務
概念,操作系統同時運行多個任務
fork(創建進程)
導入os模塊
程序運行到os.fork時,系統會創建一個子進程,然后把父進程復制一份到子進程,子進程的值一定是0,父進程返回子進程的id
getpid(),getppid()
getpid(),當前進程id,getppid父進程id
多次fork問題
父進程,子進程執行順序沒有規律,完全取決于操作系統的系統調度算法
multiprocessing
跨版本多進程模塊
import Process (multiprocessing)
說明
創建子進程時,只需要傳入一個執行函數和函數的參數,創建一個Process實例,用start()方法啟動,這樣創建進程比fork()還要簡單。
·join()方法可以等待子進程結束后再繼續往下運行,通常用于進程間的同步。
·target:表示這個進程實例所調用對象;
·args:表示調用對象的位置參數元組;
·kwargs:表示調用對象的關鍵字參數字典;
·name:為當前進程實例的別名;
·group:大多數情況下用不到;
Process類常用方法:
·is_alive():判斷進程實例是否還在執行;
·join([timeout]):是否等待進程實例執行結束,或等待多少秒;
·start():啟動進程實例(創建子進程);
·run():如果沒有給定target參數,對這個對象調用start()方法時,就將執行對象中的run()方法;
·terminate():不管任務是否完成,立即終止;
Process類常用屬性:
·name:當前進程實例別名,默認為Process-N,N為從1開始遞增的整數;
·pid:當前進程實例的PID值;