python 进度条 多线程_Python多线程与多进程

本文介绍了Python中的多线程和多进程库,如ThreadPool、DummyPool和ProcessPool。针对计算密集型和IO密集型任务,分别推荐使用多进程和多线程。Python的GIL限制了多线程的并行效率,而多进程可以更好地利用CPU资源。文章还提到了使用`p_tqdm`库将进度条与多线程、多进程结合的方法,并展示了如何通过`partial`处理复杂参数。
摘要由CSDN通过智能技术生成

进程与线程

Python封装了多进程与多线程库,ThreadPool和DummyPool属于多线程,ProcessPool属于多进程。

# 多线程

from multiprocessing.pool import ThreadPool

from multiprocessing.dummy import Pool as DummyPool

# 多进程

from multiprocessing import Pool as ProcessPool

计算密集型任务使用多进程,IO密集型任务使用多线程。

Python有GIL(全局解释器锁),每个CPU在同一时间内只能执行一个线程。

CPU密集型任务使用多进程:

Python2.x使用ticks计数达到100即释放GIL,导致CPU密集型任务在for循环等任务中频繁切换线程,消耗资源。

Python3.x不使用ticks计数而是使用计时,对CPU密集型任务更友好了,但是没有解决GIL导致的每个CPU在同一时间内只能执行一个线程的问题,所以效率依然不高。

IO密集型任务使用多线程:

多线程在遇到IO时自动切换线程,不浪费CPU资源。

并行:同时处理多个任务

并发:以切片式分段串行处理多任务

据说,对于多进程而言,有return会比没有return慢很多很多,对于多线程却只会慢一点点

通用示例

def func(param):

pass

return ...

pool = ThreadPool(4)

res = pool.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值