多進程與多線程的應用

07.07自我總結

一.多進程的應用

1.多進程模塊

multiprocessingpython

其中經常使用到的幾個功能linux

Process用於定義進程windows

#定義進程有兩種方式
from multiprocessing import Process
#第一種方式定義個方法
def func(aaa):
    pritn(123)
    
if __name__ == '__main__':
    process = Process(target=func,args=(123,))  #將target表現進程的任務名稱 ,若是任務須要傳參就加args   

注意:傳參必須是集合的形式即便參數只有一個

#第二種定義個類
class Proce(Process): #用類的方法繼承Process
    
    def run(self):               #run方法爲任務執行的內容
        print('1')
if __name__ == '__main__':
    process = Proce()       
    
若是任務須要傳參,
class Proce(Process):  # 用類的方法繼承Process
    def __init__(self,data):
        super().__init__()
        self.data = data
    def run(self):  
        print(self.data)
if __name__ == '__main__':
    process = Proce(1111)

Lock:用於定義一個互斥鎖多線程

  • 定義鎖

active_children:查看當前還在運行的自進程信息ide

cpu_count:查看cpu進程ui

2.進程的方法

  • is_alive():返回進程是否在運行。線程

  • join([timeout]):阻塞當前上下文環境的進程程,直到調用此方法的進程終止或到達指定的timeout(可選參數)。code

  • start():進程準備就緒,等待CPU調度對象

  • run():strat()調用run方法,是主進程了運行了run而不是子進程繼承

  • terminate():無論任務是否完成,當即中止工做進程

3.進程的屬性

  • daemon:守護進程

  • exitcode(進程在運行時爲None、若是爲–N,表示被信號N結束)

  • name:進程名字。

  • pid:進程號。

4,進程的守護

使用了daemon

若是

實例化程序A.daemon = True 說明該進程守護主進程,當主進程結束了該子進程默認會跟着結束

若是不作處理deamon默認爲False

5.子進程的運行在linux與windows中區別

在windows開啓一個子進程他會把主程序自上而下從新運行一遍,因此咱們在windows中必須把和子程序相關的丟入main裏面中

在linux中只是會記錄主程序的自上而下運行後最後的運行狀態,而不會從新運行一遍,因此在linux中也不須要丟入main

綜上所述仍是將子進程丟入main裏面運行更加合適

二.多線程的應用

1.多線程的模塊

threading

其中經常使用到的幾個功能

Thread:建立線程,方法與進程相同

Lock:互斥鎖

  • lock = threading.Lock() 建立鎖

  • lock.acquire()加鎖
  • lock.release()解鎖

RLock: 也是種互斥鎖Lock容許在同一線程中被屢次acquire。而Lock卻不容許這種狀況

active_count:存活的線程數量,返回的個數中包含主線程。

enumerate:方法返回當前運行中的Thread對象列表

2.線程的方法

與進程類似

  • is_alive():返回進程是否在運行。

  • join([timeout]):阻塞當前上下文環境的線程,直到調用此方法的進程終止或到達指定的timeout(可選參數)。

  • start():進程準備就緒,等待CPU調度

  • run():strat()調用run方法,是主線程了運行了run而不是子進程

  • terminate():無論任務是否完成,當即中止工做線程

3.線程的屬性

與進程類似

  • daemon:守護線程

  • is_alive:是否存活

  • name:進程名字。

  • idend:線程號。

4.線程的守護

與進程類似

5.子線程的運行在linux與windows中區別

沒有區別,都與進程在linux運行的方式同樣

相關文章
相關標籤/搜索