专栏首页JackeyGao的博客Python 高级并发2

Python 高级并发2

Python 高级并发2

Posted September 30, 2015

一般程序并发分为多线程多进程并发.

那么什么时候选择两种并发手段, 该如何选择呢, 应用场景是什么?

根据编程逻辑一般需要计算密集和I/O操作密集的时候选择并发提高程序效率, Python 由于GIL的限制,密集性运算需要使用多核心CPU时候, 这时候多线程显得力不从心, 甚至会变得更慢。而当需要I/O操作, 比如HTTP长连接的时候, 耗费的时间只是TCP建立链接的等待时间, 这时候当然优先使用多线程。

所以一般情况下, 我们开发程序耗费比较慢的是计算密集I/O密集两种情况下的逻辑, 那么我可以采取:

  • 计算密集:多进程
  • I/O密集:多线程

推荐使用库:

concurrent.futures 是python3新增加的一个库,用于并发处理,类似于其他语言里的线程池(也有一个进程池),他属于上层的封装,对于用户来说,不用在考虑那么多东西了, 现已加入python 3.2标准库, python 2.7需要安装一下。

pip install futures

Executor:两个子ThreadPoolExecutorProcessPoolExecutor分别是产生进程池和线程池

Future:有Executor.submit产生多任务

ThreadPoolExecutor 和 ProcessPoolExecutor直接python的with as 控制流语句, 让你非常简单的就套入了程序里面。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 高级并发

    就是直接用『原子操作』(atomic operation)所实现的并发。这种并发是给程序库的编写者用的, 而应用程序开发者则不需要它,因为这种写法很容易出错,而...

    用户1416054
  • Django小技巧02: humanize

    Django 附带一组模板过滤器, 可为您的数据添加人性化选项。它用于将数字或者日期转化为人类友好可读的格式.

    用户1416054
  • Celery用户手册 - Application

    该Application线程是安全(thread-safe)的,以便你可以使用多个不同的Application 配置. 组件和任务能共存于相同的进程空间。

    用户1416054
  • 从多进程到多线程

    为了说明白为什么引入线程这个概念,我们将线程和进程进行一个对比,这个问题就很清晰明了了。

    xujjj
  • 你能分清多进程与多线程吗?

    在开始讲今天的正文之前,先给大家介绍一个概念「多线程工作」,这个概念可能有的人听过,也可能有的人平常工作中就是这么做的。我再来给大家讲讲这个概念,所谓的「多线程...

    张俊红
  • 轻松实现Python中的多进程与多线程

    在开始讲今天的正文之前,先给大家介绍一个概念「多线程工作」,这个概念可能有的人听过,也可能有的人平常工作中就是这么做的。我再来给大家讲讲这个概念,所谓的「多线程...

    1480
  • 18.6.12日报

    1,http://vip.58ganji.com/house/publish/ershou/?chooseWeb%5B%5D=2

    龙泉寺扫地僧
  • BizTalk Server 2016配置 WCF SAP Adapter

    BizTalk Server 2016配置 WCF SAP Adapter 最近公司内部需要使用BizTalk与SAP 系统进行对接,虽然SAP/PI可以以发...

    阿新
  • .net framework 3.5 安装失败解决方案

    出错提示:windows功能无法安装以下功能:.NET Framework 3.5(包括.NET 2.0和3.0)

    小狐狸
  • 【超越柯洁】AlphaGo创始人演讲:走向通用 AI(67PPT)

    【新智元导读】7月18日,世界职业围棋排名网站GoRatings公布最新世界排名,谷歌旗下 DeepMind 的人工智能程序 AlphaGo 以3612分,超越...

    新智元

扫码关注云+社区

领取腾讯云代金券