加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Python并发:线程和锁

发布时间:2019-04-13 12:59:07 所属栏目:建站 来源:Python部落
导读:概述 线程和锁是硬件底层的软件定义形式化,因此包含最简单的可能并发模型。它构成了其他构建在其顶层的并发抽象基础,因此理解这一点很重要。然而,直接在这些基础上构建可靠,可扩展的系统是很困难的或着说是不可能的。 虽然大多数语言都支持线程和锁,

如果你选择使用Python中的原生线程模型,你可能会惊喜地发现logging模块不仅是线程安全的,而且还支持从任何特定线程或进程进行日志记录(示例在logging手册)。然后,难点是在你的应用程序中哪里更可能触发异常,这如何影响你的线程模型以及确保在这些代码段周围进行可靠的日志记录。将日志添加到你的应用可能会产生不小的延迟,正如pylint通过警告模块logging-lazy-interpolation通知你那样,这也可能会给你的线程模型带来困难。

concurrent.futures

在撰写这篇文章时发现Python

multiprocessing.pool.ThreadPool实现从未被记录或测试过,因为它从未完成,这让我感觉非常不愉快。它在Python3.7中仍然还是这样,因为它出现在GitHub镜像的源代码中。鉴于全局解释器锁的无所不在,以及未来并发程序主要是并行I/O相关的工作,使用Python3.x中提供的像concurrent.futures.Executor或类似的新异步模式可能更有意义,因为他们更全面。我没有使用过这个模块,但我想与multiprocessing相比,它不会产生显着的性能损耗。

结论

Python对线程和锁具有基本的支持,它可能不像其他语言(例如Java)中的线程和锁那样功能全面且有用。在使用像Python等更高级别的解释语言进行操作时,最好避免使用线程和锁。然而,Python确实提供了关于线程和锁定的足够友好的曝光度,以便对线程和锁的工作方式进行良好的学术练习,也给并发界提供了激动人心的介绍。

英文原文:https://bytes.yingw787.com/posts/2019/01/12/concurrency_with_python_threads_and_locks/

译者:南宫云遥

【编辑推荐】

  1. 10个Python图像编辑工具
  2. PYPL 4 月排行:Python 最流行,Java 还行不行?
  3. Python 之父再度发声:我们能为中国的“996”程序员做什么?
  4. Stack Overflow 2019开发者调查报告发布,Python或成赢?
  5. Fedora 提出统一流程,弃用上千 Python 2 软件包更可控
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读