代碼創建行程和執行緒的兩種方式
"""
定心丸:Python創建行程和執行緒的方式基本都是一致的,包括其中的呼叫方法等,學會一個
另一個自然也就會了,
"""
1.創建行程的兩種方式
-
方式一
import os import time from multiprocessing import Process # 實體化一個multiprocessing.Process的物件,并傳入一個初始化函式物件 def task(name): print(f'行程 {name} 的PID為{os.getpid()},父行程ID為 {os.getppid()}') time.sleep(2) print(f'行程 {name} 的PID為{os.getpid()} 運行結束') if __name__ == '__main__': # 此處要注意,windows下開啟行程一定要在main方法下開啟 process1 = Process(target=task, args=('1',)) process2 = Process(target=task, args=('2',)) # 啟動行程 process1.start() # 告訴作業系統幫你創建一個行程 process2.start() print(f'主行程 {os.getpid()}') -
方式二
import os import time from multiprocessing import Process # 繼承類的方式去創建 class MyProcess(Process): def __init__(self, name): # 繼承Process中的__init__() super(MyProcess, self).__init__() self.name = name # 此處必要在該類中創建run方法 重寫run方法 def run(self): print(f'行程 {self.name} 的PID為{os.getpid()},父行程ID為 {os.getppid()}') time.sleep(2) print(f'行程 {self.name} 的PID為{os.getpid()} 運行結束') if __name__ == '__main__': # 創建兩個行程 process1 = MyProcess('1') process2 = MyProcess('2') # 開啟這兩個行程 process1.start() process2.start() print(f'主行程 {os.getpid()}')運行結果如下:
""" 主行程 2776 行程 1 的PID為9364,父行程ID為 2776 行程 2 的PID為4140,父行程ID為 2776 行程 1 的PID為9364 運行結束行程 2 的PID為4140 運行結束 """
2.創建執行緒的兩種方式
-
方式一
import time from threading import Thread # 實體化一個threading.Thread的物件,并傳入一個初始化函式物件 def task(name): print(f"執行緒 {name} is running") time.sleep(2) print(f"執行緒 {name} is over") if __name__ == '__main__': # 開啟執行緒不需要在main下面執行代碼,直接書寫就可以 # 但是還是習慣性的將啟動命令寫在main下面 # 創建兩個執行緒 thead1 = Thread(target=task, args=('1',)) thead2 = Thread(target=task, args=('2',)) # 開啟兩個執行緒 thead1.start() # 創建執行緒的開銷非常小,幾乎代碼一執行執行緒就創建了 thead2.start() print("主") -
方式二
import time from threading import Thread # 繼承類的方式去創建 class MyThead(Thread): def __init__(self, name): # 繼承Thead中的__init__() super(MyThead, self).__init__() self.name = name # 此處必要在該類中創建run方法 重寫run方法 def run(self): print(f"執行緒 {self.name} is running") time.sleep(2) print(f"執行緒 {self.name} is over") if __name__ == '__main__': # 創建兩個執行緒 thead1 = MyThead('1') thead2 = MyThead('1') # 開啟這兩個執行緒 thead1.start() thead2.start() print('主') -
輸出結果為如下:
""" 執行緒 1 is running 主 執行緒 2 is running 執行緒 1 is over執行緒 2 is over """
上方只是簡單的創建行程和執行緒,以上注釋只是個人理解,不足的地方還望見諒,歡迎補充
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61876.html
標籤:Python
