事件驅動程式

2021-09-03 01:37:11 字數 2138 閱讀 1745

事件驅動程式側重於事件。 最終,程式的流程取決於事件。 到目前為止,我們正在處理順序或並行執行模型,但具有事件驅動程式設計概念的模型稱為非同步模型。 事件驅動的程式設計依賴於一直監聽新來的事件的事件迴圈。 事件驅動程式設計的工作取決於事件。 一旦事件迴圈,事件就決定執行什麼以及按什麼順序執行。

python模組 - asyncio

asyncio模組是在python 3.4中新增的,它提供了使用協同例程編寫單執行緒併發**的基礎結構。 以下是asyncio模組使用的不同概念

事件迴圈

事件迴圈是處理計算**中所有事件的功能。 它在執行整個程式的過程中一路行動,並跟蹤事件的傳入和執行。 asyncio模組允許每個程序使用乙個事件迴圈。

特徵 - future

這與表示未完成的計算的concurrent.futures.future類相容。

import asyncio

async def myoperation(future):

await asyncio.sleep(2)

future.set_result('future completed')

loop = asyncio.get_event_loop()

future = asyncio.future()

asyncio.ensure_future(myoperation(future))

try:

loop.run_until_complete(future)

print(future.result())

finally:

loop.close()

協同程式

asyncio中的協程的概念與執行緒模組下的標準執行緒物件的概念類似。 這是子程式概念的一般化。 協程在執行過程中可以暫停,以等待外部處理,並在完成外部處理時從其停止點返回。

import asyncio

async def myoperation():

print("first coroutine")

loop = asyncio.get_event_loop()

try:

loop.run_until_complete(myoperation())

finally:

loop.close()

import asyncio

@asyncio.coroutine

def myoperation():

print("first coroutine")

loop = asyncio.get_event_loop()

try:

loop.run_until_complete(myoperation())

finally:

loop.close()

任務

asyncio模組的這個子類負責以並行方式在事件迴圈中執行協程。

import asyncio

import time

async def task_ex(n):

time.sleep(1)

print("processing {}".format(n))

async def generator_task():

for i in range(10):

asyncio.ensure_future(task_ex(i))

print("tasks completed")

asyncio.sleep(2)

loop = asyncio.get_event_loop()

loop.run_until_complete(generator_task())

loop.close()

傳輸

asyncio模組提供了用於實現各種型別通訊的傳輸類。 這些類不是執行緒安全的,並且在建立通訊通道後總是與協議例項配對。

以下是從basetransport繼承的不同型別的傳輸

以下是basetransport類的五種不同方法,它們隨後在四種basetransport類有不同的變型 協議

asyncio模組提供了可以繼承的基類,以實現您的網路協議。 這些類與運輸一起使用; 該協議解析傳入資料並要求寫入傳出資料,而傳輸負責實際的i/o和緩衝。 以下是三種protocol類

linux 驅動程式 高階字元驅動程式

ioctl方法 驅動程式的原型實現 int ioctl struct inode inode,struct file filp,unsigned int cmd,unsigned long arg ioctl 命令選擇 位段結構 number direction ioc read ioc write...

linux裝置驅動程式 字元裝置驅動程式

先留個 有一起學習驅動程式的加qq295699450 字元裝置驅動 這篇比較惱火。載入成功,但是讀不出來資料,有知道怎麼回事的,留個言,一起討論下 資料結構 struct scull mem struct scull dev dev 整個驅動程式 如下 include include include...

Linux裝置驅動程式 字元裝置驅動程式

1.檢視主裝置號,次裝置號 進入 dev目錄執行ls l,第四,五列分別為主次裝置號,10,180,1,5,這些是主裝置號,而60,63這些就是次裝置號 130 shell android dev ls l crw rw r system radio 10,60 1969 12 31 21 00 a...