python多进程和多线程一起使用_Python(二):多进程与多线程

本文介绍了Python中的并发编程概念,包括并发与并行的区别,阐述了Python多线程在多核CPU下无法提升执行效率的原因。讨论了使用ThreadLocal解决全局变量共享问题,以及多进程与多线程的优缺点。提到了线程切换的代价,区分了计算密集型和IO密集型任务,并介绍了异步IO和协程在提高多任务效率中的作用。最后提到了multiprocessing模块在分布式进程共享通信中的应用。
摘要由CSDN通过智能技术生成

一,并发与并行

并发:CPU使用一个核心在各程序之间交替执行,形成一种让人以为程序同时运行的错觉,并不会真正的提升执行效率和速度

并行:CPU使用多个核心同时执行多个程序,各程序指令运行在不同的CPU内核上面,程序平行的向前推进,可以真正的提升执行速度

二,遗留问题

Python多线程只能使用一个核心,解释器的设计遗留问题

利用CPU多核只能通过多进程,或者在线程中使用C语言扩展

三,使用ThreadLocal来读写全局变量

多线程共享全局变量,非常容易把全局变量改乱,所以在全局变量声明ThreadLocal对象实例(可以理解为一个dict),在其对象上绑定的所有属性数据,在每个线程中都是独立的,不同的

ThreadLocal最常用的地方就是为每个线程绑定一个数据库连接,HTTP请求,用户身份信息等

四,线程对比进程

多进程和多线程,这是实现多任务最常用的两种方式。现在,我们来讨论一下这两种方式的优缺点。

首先,要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker。

如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker。

如果用多线程实现Master-Worker,主线程就是Master,其他线程就是Worker。

多进程模式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值