1
我正在使用discord.py與不和諧進行交互。從Python中的非協議函數運行協程函數?
def hi():
await client.send_message(channel, message)
得到語法錯誤,除非我在hi()函數中寫入「async」。 我真的不明白這一點,請幫助!
我正在使用discord.py與不和諧進行交互。從Python中的非協議函數運行協程函數?
def hi():
await client.send_message(channel, message)
得到語法錯誤,除非我在hi()函數中寫入「async」。 我真的不明白這一點,請幫助!
您可以在事件循環中安排協程。你不能在非協程中調用它們或等待它們。
讓我們來看看下面的代碼:
import asyncio
async def greetLater(name, delay):
await asyncio.sleep(delay)
print("Hello {}!".format(name))
def main():
loop = asyncio.get_event_loop()
loop.run_until_complete(greetLater("masnun", 10))
if __name__ == '__main__':
main()
在上面的代碼,greetLater
是一個協同程序。我們不能直接從main
函數中調用它。我們在這裏需要做的是創建一個事件循環,然後在那裏安排協程。我們使用asyncio
模塊來幫助我們創建事件循環並運行協程。
更多參考:
http://masnun.com/2015/11/13/python-generators-coroutines-native-coroutines-and-async-await.html
http://masnun.com/2015/11/20/python-asyncio-future-task-and-the-event-loop.html
(免責聲明:鏈接的話題我的個人博客文章,你可以谷歌更多的參考資料)
傳遞循環到它所在的函數中可以關閉嗎?我所做的可能會被其他人使用,我認爲你比我更有經驗。 – apoorlydrawnape
我沒有完全理解這個場景,但是通常傳遞循環沒問題。 – masnun