python併發程式設計之多程序 實踐篇

2021-10-12 07:27:16 字數 2663 閱讀 2167

python併發程式設計之多程序(實踐篇)

一 multiprocessing模組介紹

python中的多執行緒無法利用多核優勢,如果想要充分地使用多核cpu的資源,在python中大部分情況需要使用多程序。python提供了multiprocessing。

multiprocessing模組用來開啟子程序,並在子程序中執行我們定製的任務(比如函式),multiprocessing模組的功能眾多:支援子程序、通訊和共享資料、執行不同形式的同步,提供了process、queue、pipe、lock等元件。

與執行緒不同,程序沒有任何共享狀態,程序修改的資料,改動僅限於該程序內

二 process類的介紹與使用

建立程序的類:

process([group [, target [, name [, args [, kwargs]]]]]),由該類例項化得到的物件,表示乙個子程序中的任務(尚未啟動)

強調:需要使用關鍵字的方式來指定引數

args指定的為傳給target函式的位置引數,是乙個元組形式,必須有逗號

引數介紹:

複製**

複製**

1 group引數未使用,值始終為none

2 target表示呼叫物件,即子程序要執行的任務

3 args表示呼叫物件的位置引數元組,args=(1,2,『anne』,)

4 kwargs表示呼叫物件的字典,kwargs=

5 name為子程序的名稱

複製**

複製**

建立並開啟程序的兩種方法

複製**

#方法一 直接呼叫

import time

import random

from multiprocessing import process

def run(name):

print(』%s runing』 %name)

time.sleep(random.randrange(1,5))

print(』%s running end』 %name)

p1=process(target=run,args=(『anne』,)) #必須加,號

p2=process(target=run,args=(『alice』,))

p3=process(target=run,args=(『biantai』,))

p4=process(target=run,args=(『haha』,))

p1.start()

p2.start()

p3.start()

p4.start()

print(『主線程』)

複製**

複製**

#方法二 繼承式呼叫

import time

import random

from multiprocessing import process

class run(process):

definit(self,name):

super().init()

self.name=name

def run(self):

print(』%s runing』 %self.name)

time.sleep(random.randrange(1,5))

print(』%s runing end』 %self.name)

p1=run(『anne』)

p2=run(『alex』)

p3=run(『ab』)

p4=run(『hey』)

p1.start() #start會自動呼叫run

p2.start()

p3.start()

p4.start()

print(『主線程』)

複製**

process物件的join方法

複製**

import time

import random

from multiprocessing import process

class run(process):

definit(self,name):

super().init()

self.name=name

def run(self):

print(』%s runing』 %self.name)

time.sleep(random.randrange(1,5))

print(』%s runing end』 %self.name)

p1=run(『anne』)

p2=run(『alex』)

p3=run(『ab』)

p4=run(『hey』)

p1.start() #start會自動呼叫run

p2.start()

p3.start()

p4.start()

p1.join() #等待p1程序停止

p2.join()

p3.join()

p4.join()

print(『主線程』)

#注意上面的**是主程序等待子程序,等待的是主程序,所以等待的總時間是子程序中耗費時間最長的那個程序執行的時間

#上述啟動程序與join程序可以簡寫為

複製**

python併發程式設計之多程序

今天學習了python併發程式設計之多程序 一 multiprocessing模組介紹 python中的多執行緒無法利用多核優勢,如果想要充分地使用多核cpu的資源 os.cpu count 檢視 在python中大部分情況需要使用多程序。python提供了multiprocessing。multi...

併發程式設計之多程序

程序理論 一 什麼是程序?程序 正在進行的乙個過程或者說乙個任務。而負責執行任務則是cpu。二 程序與程式的區別 程式僅僅只是一堆 而已,而程序指的是程式的執行過程。同乙個程式執行兩次,那也是兩個程序 三 併發與並行 並行處理 parallel processing 是計算機系統中能同時執行兩個或者...

python併發程式設計之多程序一

一,什麼是程序 程序是作業系統結構的基礎 是乙個正在執行的程式 計算機中正在執行的程式例項 可以分配給處理器並由處理器執行的乙個實體 二,程序與程式的區別 程序即執行中的程式,從中即可知,程序是在執行的,程式是非執行的,當然本質區別就是動態和靜態的區別。三,併發與並行解釋一 並行是指兩個或者多個事件...