Python獲取協程返回值的四種方式詳解

2022-09-21 16:48:10 字數 2293 閱讀 8180

目錄

獲取協程返回值的四種方式:

1、通過ensure_future獲取,本質是future物件中的result方

2、使用loop自帶的create_task, 獲取返回值

3、使用callback, 一旦awa程式設計客棧it地方的內容執行完,就會執行callback

4、使用partial這個模組向callback函式中傳入值

import asyncio

from functools import partial

async def talk(name):

print(f"talk function run.")

await asyncio.sleep(0.1)

return f" talk!"

async def sleep(name):

print(f"sleep function run.")

await asyncio.sleep(0.1)

return f" sleep!"

def callback(name):

print(f"主動丟擲接收:")

if __name__ == "__main__":

# 通過ensure_future獲取,本質是future物件中的result方法

# loop = asyncio.get_event_loop()

# get_future1 = asyncio.ensure_future(talk("dog"))

# get_future2 = asyncio.ensure_future(sleep("catwww.cppcns.com"))

# loop.run_until_complete(get_future1)

# loop.run_until_complete(get_fuwww.cppcns.comture2)

# print(get_future1.result())

# print(get_future2.result())

# 使用loop自帶的create_task, 獲取返回值

# loop = asyncio.get_event_loop()

# task1 = loop.create_task(talk("dog"))

# task2 = loop.create_task(sleep("cat"))

# loop.run_until_complete(task1)

# loop.run_until_complete(task2)

# print(task1.result())

# print(task2.result())

# 使用callback, 一旦await地方的內容執行完,就會執行callback

# loop = asyncio.get_event_loop()

# task1 = loop.create_task(talk("dog"))

# task2 = loop.create_task(sleep("cat"))

# task1.add_done_callback(callback)

# task2.add_done_callback(callback)

# loop.run_until_complete(task1)

# loop.run_until_complete(task2)

# print(task1.result())

# print(task2.result())

# 使用partial這個模組向callback函式中傳入值

loop = asyncio.get_event_loop()

task1 = loop.create_task(talk("dog"))

task2 = loop.create_task(talk("cat"))

task1.add_done_callback(partial(callback))

task2.add_done_callback(partial(callback))

loop.run_until_complete(task1)

loop.run_until_complete(task2)

print(task1.result())

print(task2.result())

通過ensure_future獲取,本質是future物件中的result方法

使用loop自帶的create_task, 獲取返回值

用callback, 一旦await地方的內容執行完,就會執行callback

使用partial這個模組向callback函式中傳入值

go 協程返回值處理操作

我就廢話不多說了,大家還是直接看 吧 package main import fmt import sy程式設計客棧nc var ch make chan int func do lock sync.mutex,ct int 通過全域性的 map 來通訊 var sum func calc t ta...

python 獲取程序的返回值

使用multiprocessing的manager下的list,dict等模組接收返回值 示例如下 import multiprocessing from multiprocessing import manager defworker procnum,returns worker function...

Python 獲取多執行緒獲取返回值

1.通過重寫thread類,自定義乙個get result 方法 重新定義帶返回值的執行緒類 from threading import thread from time import sleep,time class mythread thread def init self,func,args ...