网站首页 > 主流语言 > python 正文
1. 安装和入门使用
安装pip install pypeln
,基本元素如下:
2 基于multiprocessing.Process
这个是基于多进程。
import pypeln as pl import time from random import random def slow_add1(x): time.sleep(random()) # <= some slow computation return x + 1 def slow_gt3(x): time.sleep(random()) # <= some slow computation return x > 3 data = range(10) # [0, 1, 2, ..., 9] stage = pl.process.map(slow_add1, data, workers=3, maxsize=4) stage = pl.process.filter(slow_gt3, stage, workers=2) data = list(stage) # e.g. [5, 6, 9, 4, 8, 10, 7]
3 基于threading.Thread
顾名思义,基于多线程。
import pypeln as pl import time from random import random def slow_add1(x): time.sleep(random()) # <= some slow computation return x + 1 def slow_gt3(x): time.sleep(random()) # <= some slow computation return x > 3 data = range(10) # [0, 1, 2, ..., 9] stage = pl.thread.map(slow_add1, data, workers=3, maxsize=4) stage = pl.thread.filter(slow_gt3, stage, workers=2) data = list(stage) # e.g. [5, 6, 9, 4, 8, 10, 7]
4 基于asyncio.Task
协程,异步io。
import pypeln as pl import asyncio from random import random async def slow_add1(x): await asyncio.sleep(random()) # <= some slow computation return x + 1 async def slow_gt3(x): await asyncio.sleep(random()) # <= some slow computation return x > 3 data = range(10) # [0, 1, 2, ..., 9] stage = pl.task.map(slow_add1, data, workers=3, maxsize=4) stage = pl.task.filter(slow_gt3, stage, workers=2) data = list(stage) # e.g. [5, 6, 9, 4, 8, 10, 7]
5 三者性能对比
IO 密集型应用CPU等待IO时间远大于CPU 自身运行时间,太浪费;常见的 IO 密集型业务包括:浏览器交互、磁盘请求、网络爬虫、数据库请求等。
Python 世界对于 IO 密集型场景的并发提升有 3 种方法:多进程、多线程、异步 IO(asyncio)。理论上讲asyncio是性能最高的,原因如下:
1.进程、线程会有CPU上下文切换
2.进程、线程需要内核态和用户态的交互,性能开销大;而协程对内核透明的,只在用户态运行
3.进程、线程并不可以无限创建,最佳实践一般是 CPU*2;而协程并发能力强,并发上限理论上取决于操作系统IO多路复用(Linux下是 epoll)可注册的文件描述符的极限
下面是一个数据库访问的测试:
内存:
串行:75M
多进程:1.4G
多线程:150M
asyncio:120M
以上就是python流水线框架pypeln的安装使用教程的详细内容,更多关于python流水线框架的资料请关注开源网其它相关文章!
猜你喜欢
- 2021-07-16 Python数据分析入门之数据读取与存储
- 2021-07-16 python执行js代码的方法
- 2021-07-16 python使用Streamlit库制作Web可视化页面
- 2021-07-16 python制作的天气预报小工具(gui界面)
- 2021-07-16 python框架flask知识总结
- 2021-07-16 python 装饰器的使用与要点
- 2021-07-16 教你用python控制安卓手机
- 2021-07-16 Python绘制地图神器folium的新人入门指南
- 2021-07-16 基于python对B站收藏夹按照视频发布时间进行排序的问题
- 2021-07-12 pymysql实现增删改查的操作指南(python)
你 发表评论:
欢迎- 开源分类
- 最近发表
-
- Unity3D研究院之通过ipa或apk获取游戏所使用的unity和Xcode版本
- Unity3D研究院编辑器之脚本生成Preset Libraries(十四)
- 手把手教你Charles抓包工具使用
- python开发的程序内存越来越大_遇到个python进程占用内存太多的问题 | 数据,更懂人心...
- Selenium Python3 请求头配置
- Unity3D研究院之系统内置系统图标大整理
- Unity3D研究院编辑器之5.3JSON的序列化
- Unity3D研究院编辑器之脚本打开SpritePacker窗口(十七)
- #你好Unity3D#Hierarchy视图监听gameObject点击事件
- Unity3D研究院编辑器之自定义默认资源的Inspector面板(十)
- 开源网标签
本文暂时没有评论,来添加一个吧(●'◡'●)