Python多程序其中共享變數坑

2021-10-12 12:26:47 字數 400 閱讀 8535

python 多程序使用multiprocess的庫,網上有很多**。但自己使用時有兩個關於共享變數的坑。

如果想共享乙個複雜點的變數,比如numpy矩陣,是不可以的,manager自帶的共享型別只有list,dict等這樣簡單的型別,且只能共享一層(不能說list裡面加乙個list也共享),所以如果自己想多個程序一起寫乙個numpy矩陣的時候,可以通過檔案讀寫的方式,每一次寫的時候從檔案讀取numpy矩陣,然後寫入變數,然後在寫入檔案中。

按照上述方式需要注意的是需要加鎖,共同寫檔案不加鎖會出現問題。但這裡有第二個坑,使用lock加鎖有兩個,乙個是multiprocess.lock(), 乙個是multiprocess.manager().lock(), 前者可以用與process,但不能用於pool,否則子程序直接不執行,後者可以用於pool。

python 多程序共享變數Manager

manager的字典型別 from multiprocessing import manager import collections m manager share dict m.dict struct 簡單型別可以直接賦值,後續可以直接做加減計算 share dict 1 1 print sha...

python 多程序共享變數中的manager

因為需要提公升效率,所以不可避免的用到了多程序。畢竟python中的多執行緒是偽多執行緒。在多程序中經常需要共享變數,這時可以使用queue等方式來解決,有時候我們還可以用multiprcessing中的manager。manager還可以很方便的實現程序內和程序外的互動。manager常用的兩個方...

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 ...