多程序中,各個程序開闢空間,資料是不共享的,如果想讓其資料在各個程序中實現共享,需要借助manager
from multiprocessing import process
from multiprocessing import manager
from multiprocessing import lock
defchange_dic
(dic,lock)
:# lock.acquire() # 互斥鎖上鎖
dic[
"count"]-=
1# print(dic)
# lock.release() # 互斥鎖解鎖
if __name__ ==
"__main__"
: m = manager(
) dic = m.
dict()
lock = lock(
) p_1 =
for i in
range
(100):
# p = process(target=change_dic,args=(dic,))
p = process(target=change_dic,args=
(dic,lock)
) p.start(
)for p in p_1:
p.join(
)print
(dic)
這裡順帶一提:多執行緒中資料是共享的(同一程序內的資源資料對於該程序中的多個執行緒來說是共享的),舉個例子(這裡用字典舉例,如果傳入的是變數不能直接套用):
from threading import thread
deftask
(dic)
: dic[
"count"]-=
1print
(dic[
"count"])
if __name__ ==
"__main__"
: dic =
for i in
range(50
):t = thread(target=task,args=
(dic,))
t.start(
)
Python 多程序 共享資料
coding utf 8 from multiprocessing import process,manager import time import random defkkk a list,number for i in range 10 time.sleep random.randrange ...
python多程序共享資料
python的multiprocessing模組提供兩種共享記憶體,sharedctypes與manager,manager效率較低,但支援遠端共享記憶體。sharedctypes效率較高,快manager兩個數量級,在多程序訪問時與普通記憶體訪問相當 共享方式 支援的型別 shared memor...
多程序資料共享
不用程序池的多程序的資料共享from multiprocessing import process,queue queue queue def func a,q re f 我是子程序 我放入data q.put re if name main ls for i in range 10 p proce...