Python async非同步程式設計與同步對比

2021-10-03 21:00:17 字數 1930 閱讀 1545

同步**

def

test1()

:for i in

range(10

):time.sleep(3)

print

(i,"test1"

)def

test2()

:for i in

range(15

):time.sleep(2)

print

(i,"test2"

)start_time=time.time(

)test1(

)test2(

)end_time=time.time(

)print

(end_time-start_time)

執行結果:

0 test1

1 test1

2 test1

3 test1

4 test1

5 test1

6 test1

7 test1

8 test1

9 test1

0 test2

1 test2

2 test2

3 test2

4 test2

5 test2

6 test2

7 test2

8 test2

9 test2

10 test2

11 test2

12 test2

13 test2

14 test2

60.015082120895386

非同步**:

import asyncio

import time

import threading

async

deftest1()

:for i in

range(10

):await asyncio.sleep(3)

print

(i,"test1"

)async

deftest2()

:for i in

range(15

):await asyncio.sleep(2)

print

(i,"test2"

)loop = asyncio.get_event_loop(

)# 1. 將非同步函式加入事件佇列

tasks =

[ test1(),

test2()]

# 2. 執行事件佇列, 直到最晚的乙個事件被處理完畢後結束

start_time=time.time(

)loop.run_until_complete(asyncio.wait(tasks)

)loop.close(

)end_time=time.time(

)print

(end_time-start_time)

執行結果:

0 test2

0 test1

1 test2

1 test1

2 test2

3 test2

2 test1

4 test2

3 test1

5 test2

6 test2

4 test1

7 test2

5 test1

8 test2

9 test2

6 test1

10 test2

7 test1

11 test2

12 test2

8 test1

13 test2

9 test1

14 test2

30.00783109664917

可以看出,非同步**比同步**的執行速度快了30秒。

對python async與await的理解

async await關鍵字是出現在python3.4以後。網上已經有很多文章對async await這兩個關鍵字都有講解,包括如何由python2的yield from發展到async await這兩個關鍵字,以及一些 實現都有。但是對於像我這樣初次接觸的人來說,光看 分析也不一定能理解,我也是在...

Socket非同步程式設計

以 socket 通訊中的非同步方法為例 public static manualresetevent connectdone new manualresetevent false public static void connectcallback iasyncresult ar sclient....

C 非同步程式設計

同步方法和非同步方法的區別 同步方法呼叫在程式繼續執行之前需要等待同步方法執行完畢返回結果 非同步方法則在被呼叫之後立即返回以便程式在被呼叫方法完成其任務的同時執行其它操作 非同步程式設計概覽 net framework 允許您非同步呼叫任何方法。定義與您需要呼叫的方法具有相同簽名的委託 公共語言執...