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

并发 Vs 并行

1. 概念区分

并发(Concurrency)和并行(Parallelism)是计算机科学中两个相关的但又不同的概念。

  • 并发指利用时间轮片,交替运行多个任务的能力。并发允许多个任务轮流交替执行,并共享资源(例如硬盘,网络或单个CPU)
  • 并行指利用多核CPU,同时运行多个任务的能力。并行允许多个任务在各自独立的资源下执行

2. Python实现

根据并行和并发的特点,很容易联想到进程和线程(进程 Vs 线程-CSDN博客)。Python中利用不同的机制,实现并行和并发编程:

  • 并行编程:利用multiprocessing库实现多进程开发
  • 并发编程:利用threadingcoroutines实现多线程和协程开发

2.1 multiprocessing

Python中multiprocessing库实现了将应用程序中的任务拆分,交给多个进程处理,从而提升允许效率

入门案例

程序中具有两个任务,通过mulitprocessing.Process为不同的任务创建子进程,并在子进程中运行相关任务。

import multiprocessing
import os# 定义两个不同的任务
def worker1():print(f"运行worker1任务的进程ID为:{os.getpid()}")def worker2():print(f"运行worker2任务的进程ID为:{os.getpid()}")if __name__ == "__main__":print(f"主进程的ID为:{os.getpid()}")# 为不同的任务创建不同的子进程p1 = multiprocessing.Process(target=worker1)p2 = multiprocessing.Process(target=worker2)# 启动子进程p1.start()p2.start()# 打印不同子进程的IDprint(f"p1进程的ID为:{p1.pid}")print(f"p2进程的ID为:{p2.pid}")# 主进程等待子进程的完成p1.join()p2.join()print("p1和p2子进程已经全部完成")# 查看子进程的状态print(f"p1进程是否存活:{p1.is_alive()}")print(f"p2进程是否存活:{p2.is_alive()}")

数据共享

数据不共享案例说明

由于线程之间的内存空间是相互独立的,线程不支持数据共享,可以通过下面的案例来说明。

import multiprocessing# 定义一个全局result变量
result = []# 定义一个任务,把列表中每个元素的平方值,添加到全局变量中
def square_list(mylist: list):global resultfor num in mylist:result.append(num * num)print(f"子进程中的resu
http://www.dtcms.com/a/316492.html

相关文章:

  • 管式土壤墒情监测站在高标准农田的作用
  • 具身智能触觉传感器全景调研
  • HTML 如何转 Markdown
  • 【YOLO学习笔记】YOLOv1详解
  • 亚马逊标品与非标品广告运营:从架构搭建到策略优化的专业方法论
  • Could not load the Qt platform plugin “xcb“ in “无法调试与显示Opencv
  • Natural Language Processing in Computational Creativity: A Systematic Review
  • 2025年08月05日Github流行趋势
  • 3477. 水果成篮 II
  • 电子器械行业的主数据有哪些?
  • Linux NFS 服务部署、客户端配置及 autofs 自动挂载操作指南
  • Tinylog
  • 通俗版23种设计模式解析
  • 机械手的眼睛,视觉系统如何让机器人学会精准抓取
  • GaussDB 常见问题-集中式
  • 05-栈 stack
  • 机器学习算法系列专栏:决策树算法(初学者)
  • TCP如何实现可靠传输?实现细节?
  • 三坐标测量技术解析:从基础原理到斜孔测量难点突破
  • 重生之我在暑假学习微服务第十天《网关篇》
  • Mysql常用语句
  • 广州客户 戴尔R720服务器 liunx系统 RAID5无损升级扩容
  • CTF-XXE 漏洞解题思路总结
  • AI自主任务执行系统 AI Agent无限循环,发任务给AI,让生成脚本,运行执行任务,直到成功。
  • adjtimex系统调用及示例
  • 阿里招AI产品运营
  • 从数据洪流到智能决策:Apache IoTDB如何重塑工业物联网的DB+AI新范式
  • Java技术栈/面试题合集(12)-Maven篇
  • springboot + maven 使用资源占位符实现动态加载配置文件
  • 跳表和B+树的相似和区别 ***