python进程数据共享_python程序中的进程操作-进程间的数据共享
展望未來,基于消息傳遞的并發編程是大勢所趨
即便是使用線程,推薦做法也是將程序設計為大量獨立的線程集合,通過消息隊列交換數據。
這樣極大地減少了對使用鎖定和其他同步手段的需求,還可以擴展到分布式系統中。
但進程間應該盡量避免通信,即便需要通信,也應該選擇進程安全的工具來避免加鎖帶來的問題。
以后我們會嘗試使用數據庫來解決現在進程之間的數據共享問題。
1.1Manager模塊介紹
進程間數據是獨立的,可以借助于隊列或管道實現通信,二者都是基于消息傳遞的。
雖然進程間數據獨立,但可以通過Manager實現數據共享,事實上Manager的功能遠不止于此。
A manager object returned by Manager() controls a server process which holds Python objects and allows other processes to manipulate them using proxies.
A manager returned by Manager() will support types list, dict, Namespace, Lock, RLock, Semaphore, BoundedSemaphore, Condition, Event, Barrier, Queue, Value and Array.
1.2Manager例子
code
frommultiprocessing import Manager,Process,Lock
def work(d,lock):
withlock: # 不加鎖而操作共享的數據,肯定會出現數據錯亂
d['count']-=1
if __name__ == '__main__':lock=Lock()
with Manager()asm:
dic=m.dict({'count':100})
p_l=[]for i in range(100):
p=Process(target=work,args=(dic,lock))
p_l.append(p)
p.start()for p inp_l:
p.join()
print(dic)
outputs
macname@MacdeMacBook-Pro py %python3 cccccc.py
{'count': 0}
macname@MacdeMacBook-Pro py %
總結
以上是生活随笔為你收集整理的python进程数据共享_python程序中的进程操作-进程间的数据共享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: adb shell命令_[Android
- 下一篇: 依赖倒置原则_设计模式之SOLID原则