You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python多进程中全局变量未同步更新的问题求助

问题原因

multiprocessing的每个进程拥有独立的内存空间。启动子进程时,它会复制父进程的所有数据(包括全局变量x)到自身内存中。子进程里修改的x只是它的私有副本,和主进程的x完全无关,所以主进程打印的始终是初始值0。

修复代码(使用共享内存)

用multiprocessing.Value创建进程间共享的数值对象,它能在进程间同步数据:

from multiprocessing import Process, Value
from time import sleep

# 创建共享整数对象,初始值为0,'i'表示整数类型
x = Value('i', 0)

def increment():
    while True:
        # 操作共享对象的value属性修改值
        with x.get_lock():  # 加锁防止多进程竞争(单进程可省略,推荐保留)
            x.value += 1
        sleep(1)

process_1 = Process(target=increment)
process_1.start()

for _ in range(10):
    print(x.value)
    sleep(2)

# 清理子进程
process_1.terminate()
process_1.join()
其他可行方案
  • multiprocessing.Queue:子进程将递增后的数值放入队列,主进程从队列读取数据,适合需要传递更复杂数据的场景。
  • multiprocessing.Manager:可创建共享字典、列表等复杂结构,但性能略低于Value。

内容的提问来源于stack exchange,提问作者Karthikeyan Sivaraman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 07:34:54