python多程序建立

2021-10-11 06:10:51 字數 2060 閱讀 1688

程序相當於是乙個工作車間,裡面可以有很多流水線(執行緒)。使用multiprocessing來建立程序物件。**如下:

import multiprocessing

num =

0def

add1

(n):

global num

for i in

range

(n):

num +=

1print

(num)

defadd2

(n):

global num

for i in

range

(n):

num +=

1print

(num)

defmain()

:# 建立程序物件

p1 = multiprocessing.process(target=add1,args=

(1000,)

) p2 = multiprocessing.process(target=add2, args=

(1000,)

)# 啟動程序

p1.start(

) p2.start(

)if __name__ ==

"__main__"

: main(

)

在建立程序時,第乙個引數將需要執行的任務傳入該程序,第二個引數則是將必要的值傳給該任務,值得注意的是第二個引數必須以元組的形式傳入。然後使用start()方法啟動程序物件。此時兩個程序中的任務互不影響,各幹各的,所以此時還不能叫多工。執行結果如下:

d:\super\anaconda\python.exe d:/super/python_file/study/8.網路程式設計/6-多程序建立.py

1000

1000

process finished with exit code 0

要想在程序中通訊,使其進行多工。我們使用queue()佇列作為兩個程序之間的通訊媒介,從而實現多工。**如下:

import multiprocessing

defadd_data

(q):

'''向佇列裡面加資料'''

while

true:if

not q.full():

q.put(

'----12'

)print(1

)else

:print

('滿了'

)break

defget_data

(q):

'''從佇列裡面取資料'''

while

true:if

not q.empty():

data = q.get(

)print

(data)

else

:print

("空了"

)break

defmain()

:# 建立佇列

q = multiprocessing.queue(5)

# 相當於是乙個小記憶體,兩個程序需要交換的資料將在這裡進行中轉。

# 建立程序物件

p1 = multiprocessing.process(target=add_data,args=

(q,)

) p2 = multiprocessing.process(target=get_data,args=

(q,)

)# 啟動程序

p1.start(

) p2.start(

)if __name__ ==

"__main__"

: main(

)

首先,必須使用multiprocessing中的queue類,其次建立的佇列相當於乙個小記憶體,程序間需要交換的資料都在這裡進行中轉。從而實現程序間通訊。

在佇列中,put()方法是向佇列放資料,get()方法是取資料,full()判斷是否為滿,預設返回true,empty()判斷是否為空,預設返回true。

python多程序 python多程序

當有多個非相關任務需要處理時,並行能大大提高處理速度。這裡簡要介紹python的multiprocessing模組。簡單多程序編寫 當我們任務數量確定而且比較少的時候,可以手動為每個任務指定乙個程序來執行。import multiprocessing as mp def f a print a if...

建立多程序

encoding utf 8 import sys reload sys sys.setdefaultencoding utf 8 import multiprocessing import time def worker 1 interval print worker 1 time.sleep i...

python多程序 Python多程序實踐

建立程序方式如下 可以通過lock鎖機制實現共享鎖,但比較常用的方式還是以上這些方式,效率更高,更安全。使用方式 構造 類方法 使用方式 構造 更多型別支援一般使用manager,支援的型別包括list,dict,namespace,lock,rlock,semaphore,boundedsemap...