当前位置: 首页 > news >正文

父子进程之间关于对全局变量的修改同步问题

在 Python 中,当你创建子进程时,子进程会复制父进程的内存空间。这意味着在某一时刻,子进程会有父进程中列表的一个副本

  1. 父进程的列表:在父进程中定义的列表及其值是可以在子进程创建时被复制的。
  2. 子进程的列表:子进程在创建时会有自己独立的列表副本。对这个副本的任何修改不会影响父进程中的列表,也不会影响其他子进程的列表

 实例代码:

import multiprocessingdef child_process(my_list):# 子进程中打印自己的列表print("子进程中的列表:", my_list)my_list.append(4)  # 修改子进程中的列表if __name__ == "__main__":# 父进程中的列表my_list = [1, 2, 3]# 创建子进程p = multiprocessing.Process(target=child_process, args=(my_list.copy(),))  # 传递列表副本p.start()p.join()# 父进程中的列表print("父进程中的列表:", my_list)  # 仍然是 [1, 2, 3]

 

 输出:

子进程中的列表: [1, 2, 3]
父进程中的列表: [1, 2, 3]

 

在这个例子中,父进程中的列表 my_list 和子进程中的列表是独立的。子进程对列表的修改不会影响父进程中的列表。

总结:

  • 子进程会复制父进程的内存状态,但它们的变量是独立的。
  • 如果需要在父子进程之间共享数据,可以使用 multiprocessing 模块中的 Value 或 Array,或者使用 Manager 进行更复杂的数据共享。
  • 用大白话来说,子进程被创建,在父进程中创建的列表,字典等,包含列表,字典中的值都会被复制,所有,子进程是可以对列表,字典进行遍历的,但是,任何进程之后在对列表,字典中的值进行修改的时候,任何进程中的列表,字典将不再会修改,也就是说,之后的每个进程对列表,字典的修改是互不影响的。

http://www.mrgr.cn/news/44982.html

相关文章:

  • c++包管理工具conan
  • 【超详细】基于YOLOv11的PCB缺陷检测
  • RK3568笔记六十四:SG90驱动测试
  • 数据校验的总结
  • 【C语言】自定义类型:结构体
  • 国庆期间的问题,如何在老家访问杭州办公室的网络呢
  • 【AI知识点】激活函数(Activation Function)
  • 基于LORA的一主多从监测系统_框架搭建
  • STM32 HAL 内部FLASH傻瓜式教程 各种型号单片机都适用主要解决网上例程HAL库无法写入问题
  • 【探测器】线阵相机中的 TDI 技术
  • AIGC与BI的融合:永洪开启数据智能新时代
  • Django学习笔记十三:优秀案例学习
  • HCIP-HarmonyOS Application Developer 习题(七)
  • ASK, PSK, FSK, DPSK
  • AI写作工具大比拼:揭秘Claude的神秘魅力以及如何订阅Claude
  • C语言的柔性数组
  • 《Linux从小白到高手》进阶实操篇:用户及权限有关的实际工作场景应用
  • 【鸿蒙开发】深入理解鸿蒙开发中的@State装饰器:掌握组件内状态管理
  • 密码学:古典密码.代替密码.仿射密码加密与解密 (广义欧几里得除法)
  • 【Nacos入门到实战十四】Nacos配置管理:集群部署与高可用策略