在Python中,多個進(jìn)程之間可以通過以下幾種方法共享變量:
multiprocessing.Value
和multiprocessing.Array
來創(chuàng)建共享變量。Value
用于創(chuàng)建一個共享的單個變量,而Array
用于創(chuàng)建一個共享的數(shù)組。示例代碼:
from multiprocessing import Process, Value, Array
def func(n, a):
n.value = 10
a[0] = 20
if __name__ == '__main__':
num = Value('i', 0)
arr = Array('i', range(5))
p = Process(target=func, args=(num, arr))
p.start()
p.join()
print(num.value) # 輸出:10
print(arr[:]) # 輸出:[20, 1, 2, 3, 4]
multiprocessing.Queue
來創(chuàng)建一個隊列,并使用put()
和get()
方法進(jìn)行數(shù)據(jù)的放入和獲取。示例代碼:
from multiprocessing import Process, Queue
def func(q):
q.put(10)
if __name__ == '__main__':
q = Queue()
p = Process(target=func, args=(q,))
p.start()
p.join()
print(q.get()) # 輸出:10
multiprocessing.Pipe
來創(chuàng)建一個管道,并使用send()
和recv()
方法進(jìn)行數(shù)據(jù)的發(fā)送和接收。示例代碼:
from multiprocessing import Process, Pipe
def func(conn):
conn.send(10)
conn.close()
if __name__ == '__main__':
parent_conn, child_conn = Pipe()
p = Process(target=func, args=(child_conn,))
p.start()
p.join()
print(parent_conn.recv()) # 輸出:10
這些方法可以在多個進(jìn)程之間進(jìn)行變量的共享和傳遞,根據(jù)實際需求選擇合適的方式。