python tqdm 多线程_python中的多线程和多进程

本文介绍了线程和进程的区别,强调多线程适合IO密集型任务,多进程适合计算密集型任务。在Python中,通过`multiprocessing`和`tqdm`库实现多进程和多线程的代码示例,并展示了如何进行任务进度的可视化。通过实例,演示了如何使用`pool.apply_async`进行异步执行并跟踪进度。
摘要由CSDN通过智能技术生成

一、简单理解一下线程和进程

一个进程中可有多个线程,线程之间可共享内存,进程间却是相互独立的。打比方就是,进程是火车,线程是火车厢,车厢内人员可以流动(数据共享)

二、python中的多线程和多进程

当遇到大文件读写或处理计算时,需要加速,则用上多线程和多进程,最常见的例子是网页爬虫,每次访问后等待时间很长,所以用了异步访问。

先说结论,多线程适合IO密集型任务,多进程适合计算密集型任务。

在python中,遇到IO操作,GIL(全局解释锁)会被释放,执行下一个操作,此时用到线程即可,如果开辟进程的话,需要分配初始化的时间和空间。计算密集型用线程则不行,因为若一个计算任务没有完成时,锁不会释放,所以线程相当于串行了。借用知乎上的比喻,有一个水池,4个泵,1个人,人同时只能操作一个泵,则此时相当于串行,但如果泵的工作冷却时间比为1:3,则利用率可以达到100%,其中冷却时间相当于IO操作的等待时间,此时多线程有效。

很多时候python多线程加速有限,除非是IO密集型场景,如爬虫访问网页。

三、python代码

多进程:from multiprocessing import Pool

pool = Pool(5)

多线程:from multiprocessing.pool import ThreadPool

pool = TreadPool(5)

四、代码模板

注意pool

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值