python之程序and執行緒
1.執行緒池(獨立)
-ThreadPool
結果
max_works代表最大執行緒處理數,即一次性最多處理的執行緒數量
f1.done( ) 判斷任務是否執行
f1.result( ) 返回return值
2.執行緒池和map函式
1.Linux建立子程序
Linux建立子程序的原理
-父程序和子程序,如果父程序結束,子程序也隨之結束;
-先有父程序,再有子程序,通過fork函式實現
fork函式的返回值:呼叫該方法一次,返回兩次;
os.fork( )
os.getpid( ) 獲取當前程序的pid
os.getppid( ) 獲取當前程序的父程序的id號
執行後
2.建立子程序(通過例項化)
多執行緒:I/O密集型任務
多程序:充分利用CPU,將任務提交給多個CPU去執行,處理計算密集型任務;
6.派生多程序(通過繼承的方式建立子程序)
7.多程序案例
先定義兩個類,分別是執行緒和程序
兩種方法(用執行緒和用程序)
這是裝飾器(計算執行程式所需時間)
執行結果如上
8.守護程序
守護執行緒
setDeamon:
True:主執行緒執行結束,子執行緒不再繼續執行;
False:不守護
守護程序
同上
注意:此處不守護,但是等待時間為1秒,而程式執行等待時間為三秒,所以結果如下
此處守護,結果如下
等待時間少與程式執行時間,所以最後一句不執行。(父程序執行結束,子程序自動結束)
9.終止程序
此處terminate( ) 意為終止子程序,但是需要時間
此處join( ) 意為等待子程序徹底終止
is_alive( ) 判斷程序是否終止
10.程序間通訊
-通過佇列來實現程序間的通訊;
因為consumer類裡的run函式會從佇列裡拿數字,所以此處要用terminate( )停止子程序,否則程序永遠不會結束
11.程序池
why程序池?
–如果啟動大量子程序,會消耗時間用來建立和銷燬子程序;
–使用程序池,不需要啟動大量的程序;
注意,程序池結束用的是 close 而不是terminate
12.程序池之ProcessPoolExecutor
執行緒池和程序池一樣