執行緒替代方案-- 程序
阿新 • • 發佈:2018-11-08
-python 中的模組
_ subprocess
- 完全跳過程序 使用程序
- 是派生程序的主要替代方案
- multiprocessiong
- 使用threading藉口派生,使用子程序
- 允許為多核或者多cpu派生程序,介面跟threading非常相似
- concurrent.futures
- 新的非同步執行模組
- 任務級別的操作
-多程序
- 程序間通訊(InterprocessCommnuication,IPC)
- 程序間無任何共享狀態
- 程序建立 ↓
importmultiprocessing from time import sleep,ctime def clock(interval): while True: print('開始時間 {}'.format(ctime())) sleep(interval) if __name__=="__main__": p = multiprocessing.Process(target = clock,args = (5,)) p.start() while True: print('睡眠----') sleep(1)
----------------------------------------------建立一個派生物件------------------------------------------------------------------
import multiprocessing import time class ClockProcess(multiprocessing.Process): """ 倆個函式比較重要 __init__ 建構函式 __run__ 執行函式 """ def __init__(self,interval): super().__init__() self.interval = interval def run(self): while True: print('開始時間{}'.format(time.ctime())) time.sleep(self.interval) if __name__=="__main__": p = ClockProcess(3) p.start() while True: print('666') time.sleep(1)
------------------------------在os 模組中檢視pid和ppid以及他們的關係--------------------------------------------------------
from multiprocessing import Process import os def info(title): print(title) print(__name__) print('父類的id',os.getppid()) print('本身的id',os.getpid()) def f(name): info('function f') print('hello',name) if __name__ == "__main__": info('main line') p = Process(target=f,args=('bbb',)) p.start() p.join()