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 条评论
登录 后参与评论

相关文章

来自专栏木可大大

漫谈负载均衡

负载均衡是什么鬼?从字面意思来看,它应该有两层意思分别是负载和均衡。而对于系统负载均衡它同样具有两层意思,其中系统负载指的系统能够承载的最大访问流量,系统均衡指...

1323
来自专栏专知

Python网络爬虫与信息抽取笔记02 requests库入门

1744
来自专栏人工智能LeadAI

配置深度学习主机与环境(TensorFlow+1080Ti) | 第四章 基于Anaconda的TensorFlow安装

配置深度学习主机与环境(TensorFlow+1080Ti): 01 概念介绍 Anaconda Anaconda(https://www.continuu...

4175
来自专栏增长技术

ffmpeg Documentation

| | | | | input | demuxer | encoded data | ...

1261
来自专栏Youngxj

涛先森悬浮客服插件1.1

1805
来自专栏张善友的专栏

MVC结构简介

本文编译自J2EE的相关文档。 MVC(Model-View-Controller)应用程序结构被用来分析分布式应用程序的特征。这种抽象结构能有助于将应用程序分...

1855
来自专栏bboysoul

crontab简单使用

首先随便在哪里新建一个文件 touch bboysoul 接着编辑crontab的配置文件,输入 crontab -e 输入

1113
来自专栏小车博客

Linux网络优化加速一键脚本

6793
来自专栏Java架构师学习

负载均衡调度算法大全

这种方法会将收到的请求循环分配到服务器集群中的每台机器,即有效服务器。如果使用这种方式,所有的标记进入虚拟服务的服务器应该有相近的资源容量以及负载形同的应用程序...

2763
来自专栏极客慕白的成长之路

Kraken.io – 最好用的在线图片压缩工具

Kraken.io 是一个在线图片优化和压缩服务,在保持图像原始质量的同时尽可能的缩减图像大小,支持 JPEG、PNG、GIF 动画和 SVG 格式。

661

扫码关注云+社区

领取腾讯云代金券