- 进程池
- 进程的最佳数量:cpu核数+1
import os
os.cpu.count()
- 进程池,一个池子,里面有固定数量的进程,这些进程一直属于待命状态,一旦有任务来,马上进行处理
- 同步调用 .apply(func,args=( , ))也就是说一个进程池中一个一个去执行任务
- 异步调用 .apply_async(func,args=( , ),callback = )进程池中进程一次性去执行任务返回值是一个对象,对象.get()获取值
- 进程池回调函数callback回调函数的pid和主进程pid一样,说明回调函数是主进程调用的,子进程只传值给回调函数
- .map(func,iterable)
- iterable,可迭代对象,依次把元素传给func当参数
- 线程
- 线程不可以自己独立拥有资源,线程的执行必须依赖所属进程中的资源
- 分为用户级线程和内核级线程
- 内核级线程,对于计算机内核来说,这样的线程完全被内核控制调度
- GIL锁28.GIL (itprojects.cn)
- 全局解释器锁,只有Cpython有,锁的是Python解释器
- 限制了同一时间只能有一个线程放入cpu,限制了线程的执行时间
- 对于线程来说 ,因为有GIL锁,所以没有真正的并行,只有并发
- 进程和线程的对比
- 子线程的pid和主进程的pid一样,在同一个进程里,所有的线程共享一个pid号
- 守护线程
- 定时器

- 线程池
- from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
- 提交任务submit#提交多个任务,for + submit 多个任务提交
- .shutdown() 等效于 Pool 的 close + join 是指不允许往池子中再添加任务,然后让父进程(线程)等待池中所有进程(线程)执行完所有任务
- .map(func,iterable)也有,返回值是一个生成器
posted @
2023-05-13 19:59
3notblv
阅读(
27)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?