欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java異步編程之一文看完其異步函數(shù)表

 更新時間:2023年01月26日 13:02:32   作者:楽碼  
這篇文章主要為大家介紹了java異步編程之一文看完其異步函數(shù)表示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

1 低層級 asyncio 索引

低層級 API 索引¶ 列出所有低層級的 asyncio API。

1.1 獲取事件循環(huán)

獲取當前運行的事件循環(huán) 首選 函數(shù):

asyncio.get_running_loop() 

獲得一個事件循環(huán)實例(當前或通過策略):

asyncio.get_event_loop()

通過當前策略將事件循環(huán)設置當前事件循環(huán):

asyncio.set_event_loop()

創(chuàng)建一個新的事件循環(huán):

asyncio.new_event_loop()

例子:

使用asyncio.get_running_loop()

1.2 事件循環(huán)方法集

  • 查閱

事件循環(huán)方法 相關的主要文檔段落 。生命周期

運行一個期程/任務/可等待對象直到完成:

loop.run_until_complete()

一直運行事件循環(huán):

loop.run_forever()

停止事件循環(huán):

loop.stop()

關閉事件循環(huán):

loop.close()

返回 True , 如果事件循環(huán)正在運行:

loop.is_running()

返回 True ,如果事件循環(huán)已經(jīng)被關閉:

loop.is_closed()

關閉異步生成器:

await loop.shutdown_asyncgens()
  • 調試:

開啟或禁用調試模式:

loop.set_debug()

獲取當前測試模式:

loop.get_debug()

調度回調函數(shù):

loop.call_soon()

盡快調用回調:

loop.call_soon_threadsafe()

方法線程安全的變體:

	loop.call_soon() 

在給定時間 之后 調用回調函數(shù):

loop.call_later()

在 指定 時間調用回調函數(shù):

loop.call_at()
  • 線程/進程池

在 concurrent.futures 執(zhí)行器中運行一個獨占CPU或其它阻塞函數(shù):

await loop.run_in_executor()

設置 loop.run_in_executor() 默認執(zhí)行器:

loop.set_default_executor()
  • 任務與期程

創(chuàng)建一個 Future 對象:

loop.create_future()

將協(xié)程當作 Task 一樣調度:

loop.create_task()

設置 loop.create_task() 使用的工廠,它將用來創(chuàng)建 Tasks:

loop.set_task_factory()

獲取 loop.create_task() 使用的工廠,它用來創(chuàng)建 Tasks:

loop.get_task_factory()

異步版的 socket.getaddrinfo():

await loop.getaddrinfo()

異步版的 socket.getnameinfo():

await loop.getnameinfo()
  • 網(wǎng)絡和IPC

打開一個TCP鏈接:

await loop.create_connection()

創(chuàng)建一個TCP服務:

await loop.create_server()

打開一個Unix socket連接:

await loop.create_unix_connection()

創(chuàng)建一個Unix socket服務:

await loop.create_unix_server()

將 socket 包裝成 (transport, protocol) 對:

await loop.connect_accepted_socket()

打開一個數(shù)據(jù)報(UDP)連接:

await loop.create_datagram_endpoint()

通過傳輸通道發(fā)送一個文件:

await loop.sendfile()

將一個已建立的鏈接升級到TLS:

await loop.start_tls()

將管道讀取端包裝成 (transport, protocol) 對:

await loop.connect_read_pipe()

將管道寫入端包裝成 (transport, protocol) 對:

await loop.connect_write_pipe()
  • 套接字

從 socket 接收數(shù)據(jù):

await loop.sock_recv()

從 socket 接收數(shù)據(jù)到一個緩沖區(qū)中:

await loop.sock_recv_into()

發(fā)送數(shù)據(jù)到 socket :

await loop.sock_sendall()

鏈接 await loop.sock_connect() :

await loop.sock_connect()

接受一個 socket 鏈接:

await loop.sock_accept()

利用 socket 發(fā)送一個文件:

await loop.sock_sendfile()

開始對一個文件描述符的可讀性的監(jiān)視:

loop.add_reader()

停止對一個文件描述符的可讀性的監(jiān)視:

loop.remove_reader()

開始對一個文件描述符的可寫性的監(jiān)視:

loop.add_writer()

停止對一個文件描述符的可寫性的監(jiān)視:

loop.remove_writer()
  • Unix信號

給 signal 添加一個處理回調函數(shù):

loop.add_signal_handler()

刪除 signal 的處理回調函數(shù):

loop.remove_signal_handler()
  • 子進程集

衍生一個子進程:

loop.subprocess_exec()

從終端命令衍生一個子進程:

loop.subprocess_shell()
  • 錯誤處理

調用異常處理器:

loop.call_exception_handler()

設置一個新的異常處理器:

loop.set_exception_handler()

獲取當前異常處理器:

loop.get_exception_handler()

默認異常處理器實現(xiàn):

loop.default_exception_handler()
  • 例子

    使用 asyncio.get_event_loop() 和 loop.run_forever().

    使用 loop.call_later().

    使用 loop.create_connection() 實現(xiàn) echo客戶端.

    使用 loop.create_connection() 去 鏈接socket.

    使用add_reader()監(jiān)聽FD(文件描述符)的讀取事件.

    使用loop.add_signal_handler().

    使用loop.add_signal_handler()。

1.3 傳輸

所有傳輸都實現(xiàn)以下方法:

transport.close()

關閉傳輸。

transport.is_closing()

返回 True ,如果傳輸正在關閉或已經(jīng)關閉。

transport.get_extra_info()

請求傳輸?shù)南嚓P信息。

transport.set_protocol()

設置一個新協(xié)議。

transport.get_protocol()

返回當前協(xié)議。

傳輸可以接收數(shù)據(jù)(TCP和Unix鏈接,管道等)。它通過 loop.create_connection(), loop.create_unix_connection(), loop.connect_read_pipe() 等方法返回。

1.3.1 讀取傳輸

返回 True ,如果傳輸正在接收:

transport.is_reading()

暫停接收:

transport.pause_reading()

繼續(xù)接收:

transport.resume_reading()

傳輸可以發(fā)送數(shù)據(jù)(TCP和Unix鏈接,管道等)。它通過 loop.create_connection(), loop.create_unix_connection(), loop.connect_write_pipe() 等方法返回。

1.3.2 寫入傳輸

向傳輸寫入數(shù)據(jù):

transport.write()

向傳輸寫入緩沖:

transport.write()

返回 True ,如果傳輸支持發(fā)送 EOF:

transport.can_write_eof()

在沖洗已緩沖的數(shù)據(jù)后關閉傳輸和發(fā)送EOF:

transport.write_eof()

立即關閉傳輸:

transport.abort()

返回寫入流控制的高位標記位和低位標記位:

transport.get_write_buffer_size()

設置新的寫入流控制的高位標記位和低位標記位:

transport.set_write_buffer_limits()

由 loop.create_datagram_endpoint() 返回的傳輸:

1.3.3 數(shù)據(jù)報傳輸

發(fā)送數(shù)據(jù)到遠程鏈接端:

transport.sendto()

立即關閉傳輸:

transport.abort()

基于子進程的底層抽象傳輸,它由 loop.subprocess_exec() 和 loop.subprocess_shell() 返回:

1.3.4 子進程傳輸

返回子進程的進程ID:

transport.get_pid()

返回請求通信管道 (stdin, stdout, 或 stderr)的傳輸:

transport.get_pipe_transport()

返回子進程的返回代號:

transport.get_returncode()

殺死子進程:

transport.kill()

發(fā)送一個信號到子進程:

transport.send_signal()

停止子進程:

transport.terminate()

殺死子進程并關閉所有管道:

transport.close()

1.3.5 協(xié)議

協(xié)議類可以由下面 回調方法 實現(xiàn):

連接建立時被調用:

callback connection_made()

連接丟失或關閉時將被調用:

callback connection_lost()

傳輸?shù)木彌_區(qū)超過高位標記位時被調用:

callback pause_writing()

傳輸?shù)木彌_區(qū)傳送到低位標記位時被調用:

callback resume_writing()

1.3.6 流協(xié)議 (TCP, Unix 套接字, 管道)

接收到數(shù)據(jù)時被調用:

callback data_received()

接收到EOF時被調用:

callback eof_received()

1.3.7 緩沖流協(xié)議

調用后會分配新的接收緩沖區(qū):

callback get_buffer()

用接收的數(shù)據(jù)更新緩沖區(qū)時被調用:

callback buffer_updated()

接收到EOF時被調用:

callback eof_received()

1.3.8 數(shù)據(jù)報協(xié)議

接收到數(shù)據(jù)報時被調用:

callback datagram_received()

前一個發(fā)送或接收操作引發(fā) OSError 時被調用:

callback error_received()

1.3.9 子進程協(xié)議

子進程向 stdout 或 stderr 管道寫入數(shù)據(jù)時被調用:

callback pipe_data_received()

與子進程通信的其中一個管道關閉時被調用:

callback pipe_connection_lost()

子進程退出時被調用:

callback process_exited()

事件循環(huán)策略

策略是改變 asyncio.get_event_loop() 這類函數(shù)行為的一個底層機制。更多細節(jié)可以查閱 策略部分。

訪問策略

asyncio.get_event_loop_policy()

返回當前進程域的策略。

asyncio.set_event_loop_policy()

設置一個新的進程域策略。

AbstractEventLoopPolicy

策略對象的基類。

2 高層 API索引

列舉了所有能用于 async/wait 的高層級asyncio API 集。

2.1 任務

運行異步程序,創(chuàng)建Task對象,等待多件事運行超時的公共集。

run()

創(chuàng)建事件循環(huán),運行一個協(xié)程,關閉事件循環(huán)。

create_task()

啟動一個asyncio的Task對象。

await sleep()

休眠幾秒。

await gather()

并發(fā)執(zhí)行所有事件的調度和等待。

await wait_for()

有超時控制的運行。

await shield()

屏蔽取消操作

await wait()

完成情況的監(jiān)控器

current_task()

返回當前Task對象

all_tasks()

返回事件循環(huán)中所有的task對象。

Task

Task對象

to_thread()

在不同的 OS 線程中異步地運行一個函數(shù)。

run_coroutine_threadsafe()

從其他OS線程中調度一個協(xié)程。

for in as_completed()

用 for 循環(huán)監(jiān)控完成情況。

例子

使用 asyncio.gather() 并行運行. 使用 asyncio.wait_for() 強制超時.

撤銷協(xié)程.

	asyncio.sleep() 的用法.

請主要參閱 協(xié)程與任務文檔.

2 隊列集

隊列集被用于多個異步Task對象的運行調度,實現(xiàn)連接池以及發(fā)布/訂閱模式。

先進先出隊列

Queue

優(yōu)先級隊列:

  PriorityQueue

后進先出隊列:

LifoQueue

使用 asyncio.Queue 在多個并發(fā)任務間分配工作量.

2.1 子進程集

用于生成子進程和運行shell命令的工具包。

創(chuàng)建一個子進程:

await create_subprocess_exec()

運行一個shell命令:

await create_subprocess_shell()

比如使用 它執(zhí)行一個shell命令. 請參閱 子進程 APIs 相關文檔.

3 同步

能被用于Task對象集的,類似線程的同步基元組件。

互斥鎖:

Lock

事件對象:

Event

條件對象:

Condition

信號量:

Semaphore

有界的信號量:

BoundedSemaphore

小結

使用異步庫的例子

asyncio.Event 的用法.

請參閱asyncio文檔 synchronization primitives.

異常

asyncio.TimeoutError

類似 wait_for() 等函數(shù)在超時時候被引發(fā)。請注意 asyncio.TimeoutError 與內建異常 TimeoutError 無關。

asyncio.CancelledError

當一個Task對象被取消的時候被引發(fā)。請參閱 Task.cancel()。 在取消請求發(fā)生的運行代碼中如何處理CancelledError異常.

請參閱完整的 asyncio 專用異常 列表.

本文代碼例子

以上就是java異步編程之一文看完其異步函數(shù)表的詳細內容,更多關于java異步函數(shù)表的資料請關注腳本之家其它相關文章!

相關文章

  • 在Java中使用下劃線分隔數(shù)的字面值的用法講解

    在Java中使用下劃線分隔數(shù)的字面值的用法講解

    這篇文章主要介紹了在Java中使用下劃線分隔數(shù)字的字面值的用法講解,這是Java7以后加入的新特性,需要的朋友可以參考下
    2016-03-03
  • Zookeeper和Eureka哪個更好?

    Zookeeper和Eureka哪個更好?

    今天小編就為大家分享一篇關于Zookeeper和Eureka哪個更好?,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Java中求最大值的4種方法實例代碼

    Java中求最大值的4種方法實例代碼

    這篇文章主要給大家介紹了關于Java中求最大值的4種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 基于Java編寫簡易的算式測試程序

    基于Java編寫簡易的算式測試程序

    本文將利用Java語言編寫一個簡易的算式測試程序,這個程序可以自動生成指定數(shù)量的加減乘三則運算題目,感興趣的小伙伴可以了解一下
    2022-05-05
  • SpringBoot集成SpirePDF實現(xiàn)文本替換功能

    SpringBoot集成SpirePDF實現(xiàn)文本替換功能

    SpirePDF是一個用于.NET平臺的高級PDF文檔處理庫,它提供了一套完整的API,允許開發(fā)者創(chuàng)建、編輯、轉換、合并、分割和解析PDF文件本文給大家介紹了SpringBoot集成SpirePDF實現(xiàn)文本替換功能,需要的朋友可以參考下
    2024-09-09
  • Java泛型與注解全面分析講解

    Java泛型與注解全面分析講解

    Java?泛型(generics)是?Jdk?5?中引入的一個新特性,?泛型提供了編譯時類型安全檢測機制,該機制允許程序員在編譯時檢測到非法的類型。Annotation(注解)是JDK1.5及以后版本引入的。它可以用于創(chuàng)建文檔,跟蹤代碼中的依賴性,甚至執(zhí)行基本編譯時檢查。需要的可以參考一下
    2022-08-08
  • Java 自定義Spring框架以及Spring框架的基本使用

    Java 自定義Spring框架以及Spring框架的基本使用

    Spring框架是由于軟件開發(fā)的復雜性而創(chuàng)建的。Spring使用的是基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅僅限于服務器端的開發(fā)
    2021-10-10
  • springboot中配置好登錄攔截后,swagger訪問不了問題

    springboot中配置好登錄攔截后,swagger訪問不了問題

    這篇文章主要介紹了springboot中配置好登錄攔截后,swagger訪問不了問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • SpringBoot中Bean拷貝及工具類封裝的實現(xiàn)

    SpringBoot中Bean拷貝及工具類封裝的實現(xiàn)

    本文主要介紹了SpringBoot中Bean拷貝及工具類封裝的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • SpringMVC適配器模式作用范圍介紹

    SpringMVC適配器模式作用范圍介紹

    適配器這個詞我們應該很熟悉,天天都在使用,手機充電時,電源線頭頭就叫電源適配器,干什么用的呢?把220V電壓轉換成手機充電時使用的電壓,那么適配器是不是很好理解了,下面看一下
    2023-04-04

最新評論