python多進程詳解
阿新 • • 發佈:2018-08-12
arm 新的 cts 適合 pre %s har star 相互
1、由於python多線程適合於多IO操作,但不適合於cpu計算型工作,這時候可以通過多進程實現。python多進程簡單實用
# 多進程,可以cpu保持一致,python多線程適合多io.對於高cpu的可以通過多進程實現。 import multiprocessing import time def run(name): print(" %s process is running "%(name)) time.sleep(2) if __name__ == ‘__main__‘: for i in range(1, 10): process= multiprocessing.Process(target=run, args=(i,)) process.start()
2、python多進程。在操作系統中所有的進程都是有根進程(進程號0來創建的)。python獲取主進程號和子進程號
# 多進程,可以cpu保持一致,python多線程適合多io.對於高cpu的可以通過多進程實現。 import multiprocessing import time import os def run(name): print(" %s process is running "%(name)) time.sleep(2) def info(name): print("%s"%(name)) print("當前進程號:%s"%(os.getpid())) print("父進程號:%s"%(os.getppid())) if __name__ == ‘__main__‘: info("parent process") process = multiprocessing.Process(target=info,args=("child process",)) process.start() E:\Users\xiajinqi\PycharmProjects\Atm\venv\Scripts\python.exe E:/Users/xiajinqi/PycharmProjects/Atm/333.py parent process 當前進程號:23420 父進程號:2372 child process 當前進程號:23468 父進程號:23420 Process finished with exit code 0
3、queue 實現進程通訊,進程Q要實現通訊。必須指明為進程Q。原理:在創建子進程時候,傳遞一個Q,實際相當於復制了一個新的Q給子進程。子進程向新的Q輸入數據時候。進程Q通過一個反系列化實現將新的數據同步到舊的Q(即父進程Q)。兩個程序之間內存是隔離的。Q也是相互獨立的。
# 多進程,可以cpu保持一致,python多線程適合多io.對於高cpu的可以通過多進程實現。 from multiprocessing import Process,Queue # 只名為 進程Q import time import os qu = Queue() def test(qu): qu.put(["克隆Q"]) if __name__ == ‘__main__‘: process = Process(target=test,args=(qu,)) process.start() print(qu.get()) E:\Users\xiajinqi\PycharmProjects\Atm\venv\Scripts\python.exe E:/Users/xiajinqi/PycharmProjects/Atm/333.py [‘克隆Q‘] Process finished with exit code 0
python多進程詳解