python流水線框架pypeln的安裝使用教程
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
協(xié)程,異步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 密集型應(yīng)用CPU等待IO時間遠大于CPU 自身運行時間,太浪費;常見的 IO 密集型業(yè)務(wù)包括:瀏覽器交互、磁盤請求、網(wǎng)絡(luò)爬蟲、數(shù)據(jù)庫請求等。
Python 世界對于 IO 密集型場景的并發(fā)提升有 3 種方法:多進程、多線程、異步 IO(asyncio)。理論上講asyncio是性能最高的,原因如下:
1.進程、線程會有CPU上下文切換
2.進程、線程需要內(nèi)核態(tài)和用戶態(tài)的交互,性能開銷大;而協(xié)程對內(nèi)核透明的,只在用戶態(tài)運行
3.進程、線程并不可以無限創(chuàng)建,最佳實踐一般是 CPU*2;而協(xié)程并發(fā)能力強,并發(fā)上限理論上取決于操作系統(tǒng)IO多路復(fù)用(Linux下是 epoll)可注冊的文件描述符的極限

下面是一個數(shù)據(jù)庫訪問的測試:

內(nèi)存:
串行:75M
多進程:1.4G
多線程:150M
asyncio:120M
以上就是python流水線框架pypeln的安裝使用教程的詳細內(nèi)容,更多關(guān)于python流水線框架的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python基于keras訓(xùn)練實現(xiàn)微笑識別的示例詳解
Keras是一個由Python編寫的開源人工神經(jīng)網(wǎng)絡(luò)庫,可用于深度學習模型的設(shè)計、調(diào)試、評估、應(yīng)用和可視化。本文將基于keras訓(xùn)練實現(xiàn)微笑識別效果,需要的可以參考一下2022-01-01
Django中自定義admin Xadmin的實現(xiàn)代碼
這篇文章主要介紹了Django中自定義admin---Xadmin的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-08-08
Python入門之三角函數(shù)atan2()函數(shù)詳解
這篇文章主要介紹了Python入門之三角函數(shù)atan2()函數(shù)詳解,分享了其實例,具有一定參考價值,需要的朋友可以了解下。2017-11-11
Python內(nèi)建序列通用操作6種實現(xiàn)方法
這篇文章主要介紹了Python內(nèi)建序列通用操作6種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03
pyinstaller打包可執(zhí)行程序過程中的常見錯誤解決
這篇文章主要介紹了pyinstaller打包可執(zhí)行程序過程中的常見錯誤解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
一文帶你了解CNN(卷積神經(jīng)網(wǎng)絡(luò))
CNN是神經(jīng)網(wǎng)絡(luò)中的一種,它的權(quán)值共享網(wǎng)絡(luò)結(jié)構(gòu)使之更類似于生物神經(jīng)網(wǎng)絡(luò),降低了網(wǎng)絡(luò)模型的復(fù)雜度,減少了權(quán)值的數(shù)量。本文主要講解了CNN(卷積神經(jīng)網(wǎng)絡(luò))的基礎(chǔ)內(nèi)容,想了解更多的小伙伴可以看一看這篇文章2021-09-09
pyinstaller參數(shù)介紹以及總結(jié)詳解
這篇文章主要介紹了pyinstaller參數(shù)介紹以及總結(jié)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07

