Python 實現非同步呼叫函式執行 async

2021-10-01 22:20:36 字數 2557 閱讀 3196

在實現非同步呼叫之前我們先進行什麼是同步呼叫和非同步呼叫

分析一下,下面的例子:

定義了乙個裝飾器 async 和 a 、b 兩個function 函式

a 裡面sleep 10s , 然後列印 a function 字串

b 裡面直接列印 b function 字串

我們順序呼叫兩個功能:

a()b( )

由於函式a在睡的狀態,我們又不希望程式被阻塞在函式a的睡的狀態,所以我們採用非同步執行,即在函式a睡的狀態,讓其他的任務執行。

# -*- coding: utf-8 -*-

# @file : yibu.py

# @author : runpeng zhang

# @date : 2020/1/5

# @desc : none

from threading import thread

from time import sleep

defasync

(f):

def(

*args,

**kwargs)

: thr = thread(target=f, args=args, kwargs=kwargs)

thr.start(

)@async

defa()

: sleep(3)

print

("函式a睡了3秒鐘。。。。。。"

:# 刪除原節點

for _ in

map(self.tree0.delete, self.tree0.get_children("")

):pass

self.tree0.insert("",

"end"

, values=

( self.var_id, self.var_name, self.var_begin, self.var_run, self.var_need,

self.var_source, self.var_state)

)print

('tree0.after---'

) self.tree0.after(

500, self.get_tree)

類似於我想做乙個(圖形介面)逐秒+1, a = 0,再過一秒變成a=1,然後我圖形frame是設定了多少毫秒更新一下,但是如果我從a=0到a=100,但我這只是重複了time.sleep(1)一百次,實際的執行時間並沒有多少毫秒來達到重新整理,所以感覺我這種方式是矛盾的 !然後經過詢問浩哥的建議,採用非同步呼叫函式方式來執行。

python如何實現非同步呼叫函式執行

在實現非同步呼叫之前我們先進行什麼是同步呼叫和非同步呼叫 分析一下,下面的例子 定義了乙個裝飾器 async 和 a b 兩個function 函式 a 裡面sleep 10s 然後列印 a function 字串 b 裡面直接列印 b function 字串 我們順序呼叫兩個功能 a b 由於函式...

async await實現非同步呼叫

async await使得非同步 看起來像同步 async函式會隱式地返回乙個promise,而promise的reosolve值就是函式return的值 async await不需要寫.then,不需要寫匿名函式處理promise的resolve值,也不需要定義多餘的data變數,還避免了巢狀 a...

實現非同步呼叫Web Service

普通呼叫web service的方法,在web service執行期間客戶端會一直等待服務執行完畢才能響應。從而造成客戶端ui執行緒的阻塞假死現象。這時候,非同步呼叫就顯得很有用,它可以讓客戶端在呼叫web service時,不至於阻塞客戶端的ui執行緒導致假死,還可以在呼叫web service的...