python流水線框架pypeln的安裝使用教程

2022-09-29 05:30:11 字數 2108 閱讀 6816

安裝pip install pypeln,基本元素如下:

這個是基於多程序。

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]

顧名思義,基於多執行緒。

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)yhftjnhp

stage = pl.threwww.cppcns.comad.filter(slow_gt3, stage, workers=2)www.cppcns.com

data = list(stage) # e.g. [5, 6, 9, 4, 8, 10, 7]

協程,非同步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]

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

流水線排程

n個作業要在由2臺機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。m1和m2加工作業i所需的時間分別為a i 和b i 你可以安排每個作業的執行順序,使得從第乙個作業在機器m1上開始加工,到最後乙個作業在機器m2上加工完成所需的時間最少。求這個最少的時間...

流水線冒險

流水線冒險 回顧一下常用五階段流水線 f 取指 d 解碼 e 執行 m 訪存 w 寫回 注意 對暫存器檔案的寫只有在時鐘上公升的時候才會更新!資料冒險的原因 對暫存器檔案的讀寫是在不同階段進行的 1.用暫停來避免資料冒險 暫停時,處理器會停止流水線中一條或多條指令,直到冒險條件不再滿足。在本該正常處...

渲染流水線

應用階段 cpu準備資料,skinmeshrender,meshfilter,meshrender 頂點資料,三角形資料,法線資料,切線資料,渲染設定指令,紋理資料,uv資料 由cpu傳送給gpu,即一次drawcall 幾何階段 頂點變換,計算頂點顏色 如逐頂點光照 齊次裁剪空間,透視除法,歸一化...