1. 程式人生 > >python多進程詳解

python多進程詳解

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多進程詳解