multiprocessing
python
其中經常使用到的幾個功能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
is_alive():返回進程是否在運行。線程
join([timeout]):阻塞當前上下文環境的進程程,直到調用此方法的進程終止或到達指定的timeout(可選參數)。code
start():進程準備就緒,等待CPU調度對象
run():strat()調用run方法,是主進程了運行了run而不是子進程繼承
terminate():無論任務是否完成,當即中止工做進程
daemon:守護進程
exitcode(進程在運行時爲None、若是爲–N,表示被信號N結束)
name:進程名字。
pid:進程號。
使用了daemon
若是
實例化程序A.daemon = True 說明該進程守護主進程,當主進程結束了該子進程默認會跟着結束
若是不作處理deamon默認爲False
在windows開啓一個子進程他會把主程序自上而下從新運行一遍,因此咱們在windows中必須把和子程序相關的丟入main裏面中
在linux中只是會記錄主程序的自上而下運行後最後的運行狀態,而不會從新運行一遍,因此在linux中也不須要丟入main
綜上所述仍是將子進程丟入main裏面運行更加合適
threading
其中經常使用到的幾個功能
Thread
:建立線程,方法與進程相同
Lock
:互斥鎖
lock = threading.Lock() 建立鎖
lock.release()解鎖
RLock
: 也是種互斥鎖Lock容許在同一線程中被屢次acquire。而Lock卻不容許這種狀況
active_count
:存活的線程數量,返回的個數中包含主線程。
enumerate
:方法返回當前運行中的Thread對象列表
與進程類似
is_alive():返回進程是否在運行。
join([timeout]):阻塞當前上下文環境的線程,直到調用此方法的進程終止或到達指定的timeout(可選參數)。
start():進程準備就緒,等待CPU調度
run():strat()調用run方法,是主線程了運行了run而不是子進程
terminate():無論任務是否完成,當即中止工做線程
與進程類似
daemon:守護線程
is_alive:是否存活
name:進程名字。
idend:線程號。
與進程類似
沒有區別,都與進程在linux運行的方式同樣