[英]Share a class variable across multiple processes in python
我有一個類變量聲明為列表,我想從該類中聲明的方法進行更新。 但是,由於此方法處理大量數據,因此我使用多重處理來調用它,因此在更新它之前需要鎖定類變量。 我無法弄清楚如何放置這樣的鎖並更新類變量。 如果很重要,我在任何給定時間都只創建一個上述類的對象。
由於python的GIL,只能在完全獨立的任務且沒有共享內存的情況下使用多處理。 但是您仍然可以通過使用多處理共享數組/值來實現它:
來自https://docs.python.org/2/library/multiprocessing.html#sharing-state-between-processes
from multiprocessing import Process, Value, Array
def f(n, a):
n.value = 3.1415927
for i in range(len(a)):
a[i] = -a[i]
if __name__ == '__main__':
num = Value('d', 0.0)
arr = Array('i', range(10))
p = Process(target=f, args=(num, arr))
p.start()
p.join()
print num.value
print arr[:]
現在,按照您的要求,您需要確保differents進程不會同時訪問同一變量,並使用Lock
。 希望所有在multiprocessing
模塊中可用的共享變量都與一個鎖配對。
要訪問鎖:
num.acquire() # get the lock
# do stuff
num.release() # don't forget to release it
我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.