在Python中,進程間共享數據的方法有以下幾種:
multiprocessing
模塊中的Value
和Array
:Value
用于共享一個單一的值,而Array
用于共享一個數組,這兩種方式都是基于共享內存的。示例代碼如下:
from multiprocessing import Process, Value, Array
def worker(num, arr):
num.value = 10
for i in range(len(arr)):
arr[i] = i * i
if __name__ == '__main__':
num = Value('i', 0)
arr = Array('i', range(10))
p = Process(target=worker, args=(num, arr))
p.start()
p.join()
print(num.value)
print(arr[:])
multiprocessing
模塊中的Manager
:Manager
可以創建一個共享數據的服務器進程,然后其他進程可以通過代理對象來訪問共享數據。示例代碼如下:
from multiprocessing import Process, Manager
def worker(dict_data, list_data):
dict_data['key'] = 'value'
list_data.append(10)
if __name__ == '__main__':
with Manager() as manager:
dict_data = manager.dict()
list_data = manager.list()
p = Process(target=worker, args=(dict_data, list_data))
p.start()
p.join()
print(dict_data)
print(list_data)
multiprocessing
模塊中的Queue
:Queue
是一種先進先出的數據結構,多個進程可以通過Queue
互相傳遞數據。示例代碼如下:
from multiprocessing import Process, Queue
def worker(q):
q.put('Hello World')
if __name__ == '__main__':
q = Queue()
p = Process(target=worker, args=(q,))
p.start()
p.join()
print(q.get())
總的來說,multiprocessing
模塊提供了多種方式來實現進程間的數據共享,可以根據具體的需求選擇合適的方法。