程序相當於是乙個工作車間,裡面可以有很多流水線(執行緒)。使用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...