乐趣区

关于python:流畅的Python读书笔记-第十七章-使用future处理并发

近期在读“晦涩的 Python”这本书,想把本人的读书笔记分享给大家,心愿能帮到也对这本书感兴趣然而没工夫看的各位。(文章中大部分的话和图片摘录总结自“晦涩的 Python”一书, 以及 python 官方网站)

章节概述::concurrent.futures 模块
章节构造:

  • 应用 concurrent.futures
  • future 组件
  • 阻塞性 I / O 和 GIL
  • future 模块启动过程

内容摘要:

  • 应用 concurrent.futures

future 模块通过 ThreadPoolExecutor 和 ProcessPoolExecutor 类实现的接口在不同的线程和过程中执行可调用的对象。这两个对象在外部保护着一个工作线程或者过程池,以及要执行的工作队列

  • future 组件(concurrent.futures.Future)

这个类的实例由并发框架进行创立,示意将来产生的某件要执行的事件。Future 对象有 done 办法,它会返回布尔值,致命 future 链接的可调用对象是否曾经执行。如果执行结束,会告诉客户端(通过 add_done_callback)。

  • 阻塞性 I / O 和 GIL

GIL:全局解释器锁,因为 CPython 解释器不是线程平安,所以 GIL 实现了一次只容许一个线程执行 Python 字节码,因而一个 Python 过程通常不能同时应用多个 CPU 外围。
Python 中所有 I / O 阻塞函数都会开释 GIL,容许其余线程运行。

退出移动版