在不同进程之间共享值的问题可以通过以下几种方式来解决:
import multiprocessing
def update_shared_value(shared_value):
shared_value.value += 1
if __name__ == '__main__':
shared_value = multiprocessing.Value('i', 0)
processes = [multiprocessing.Process(target=update_shared_value, args=(shared_value,)) for _ in range(5)]
for p in processes:
p.start()
for p in processes:
p.join()
print(shared_value.value) # 输出结果为5
import multiprocessing
def update_shared_list(value):
return value + 1
if __name__ == '__main__':
pool = multiprocessing.Pool()
shared_list = [0, 1, 2, 3, 4]
results = pool.map(update_shared_list, shared_list)
pool.close()
pool.join()
print(results) # 输出结果为[1, 2, 3, 4, 5]
import multiprocessing
def update_shared_data(queue):
data = queue.get()
data += 1
queue.put(data)
if __name__ == '__main__':
queue = multiprocessing.Queue()
queue.put(0)
processes = [multiprocessing.Process(target=update_shared_data, args=(queue,)) for _ in range(5)]
for p in processes:
p.start()
for p in processes:
p.join()
print(queue.get()) # 输出结果为5
以上是三种常见的在不同进程之间共享值的解决方法,根据具体的需求选择适合的方法即可。
上一篇:不同进程之间队列和线程的问题