python异步实现方式_Python通过yield实现异步
改寫程序first函數等待long函數返回值的方式為yield,代碼如下:
import _thread
import time
gen = None
def long():
print ('long execute')
def fun():
time.sleep(5)
result = 'long end'
gen.send(result)
_thread.start_new_thread(fun,())
def first():
print ('first execute')
ret = yield long()
print (ret)
print ('fisrt end')
def second():
print ('second execute')
print ('second end')
def main():
global gen
gen = first()
gen.__next__()
second()
if __name__=='__main__':
main()
解釋一下:定義了全局變量gen,將first()函數賦值給gen,gen實際是一個生成器,因為first函數中有yield,當運行gen.__next()__時,程序運行到yield代碼,暫停,相當于first()函數已經返回,long函數開始執行,主線程繼續向下執行,long函數中新起了一個線程,該線程執行fun函數,fun函數執行完成通過gen.send(result)方式,將result的值賦給first函數中的ret,同時first函數尋找下一個yield關鍵字,由于沒有yield關鍵字程序會報錯。
總結
以上是生活随笔為你收集整理的python异步实现方式_Python通过yield实现异步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金生相伴养老保险单借款指什么
- 下一篇: jupyter notebook怎么写p