前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 高级并发2

Python 高级并发2

作者头像
用户1416054
发布2018-08-02 11:47:52
4960
发布2018-08-02 11:47:52
举报
文章被收录于专栏:JackeyGao的博客JackeyGao的博客

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 控制流语句, 让你非常简单的就套入了程序里面。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python 高级并发2
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档