Python多进程共享数据与多线程全局变量实现详解

月亮慢半拍
月亮慢半拍
发布时间:2026-10-13 | 1人浏览过
原创

本文详解Python中多进程间共享数据的方法,包括使用Value共享数值、Array共享数组,以及通过Manager实现字典和列表的跨进程共享。同时简述多线程环境下全局变量的使用方式,帮助开发者解决进程间数据同步问题。

多进程数值型数据共享

在Python多进程编程中,若需实现进程间数值型数据的共享,可利用multiprocessing模块提供的Value对象。


import multiprocessing
 
def func(num):
 num.value=10.78 #子进程改变数值的值,主进程跟着改变
 
if __name__=="__main__":
 num=multiprocessing.Value("d",10.0) # d表示数值,主进程与子进程共享这个value。(主进程与子进程都是用的同一个value)
 print(num.value)
 
 p=multiprocessing.Process(target=func,args=(num,))
 p.start()
 p.join()
 
 print(num.value)

多进程数组型数据共享

对于数组类型的数据共享,可以通过multiprocessing模块的Array对象来实现进程间的数据同步与修改。


import multiprocessing
 
def func(num):
 num[2]=9999 #子进程改变数组,主进程跟着改变
 
if __name__=="__main__":
 num=multiprocessing.Array("i",[1,2,3,4,5]) #主进程与子进程共享这个数组
 print(num[:])
 
 p=multiprocessing.Process(target=func,args=(num,))
 p.start() 
 p.join()
 
 print(num[:])

多进程字典与列表共享

当需要在多进程间共享字典或列表等复杂数据结构时,推荐使用multiprocessing.Manager提供的dict和list方法,以实现跨进程的数据交互。


import multiprocessing
 
def func(mydict,mylist):
 mydict["index1"]="aaaaaa" #子进程改变dict,主进程跟着改变
 mydict["index2"]="bbbbbb"
 mylist.append(11)  #子进程改变List,主进程跟着改变
 mylist.append(22)
 mylist.append(33)
 
if __name__=="__main__":
 with multiprocessing.Manager() as MG: #重命名
  mydict=multiprocessing.Manager().dict() #主进程与子进程共享这个字典
  mylist=multiprocessing.Manager().list(range(5)) #主进程与子进程共享这个List
 
  p=multiprocessing.Process(target=func,args=(mydict,mylist))
  p.start()
  p.join()
 
  print(mylist)
  print(mydict)

多线程全局变量使用

在多线程编程场景中,若多个线程需访问同一变量,可直接使用global关键字声明全局变量,从而实现线程间的数据共享。

上述内容介绍了Python中进程与线程间数据共享的核心方法,旨在为开发者提供实用的参考方案,欢迎收藏与支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表