1. 程式人生 > >python之程序and執行緒

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
在這裡插入圖片描述

在這裡插入圖片描述

執行緒池和程序池一樣