我有以下簡單的功能:
import time
def foo():
print(f'i am working come back in 5mins')
time.sleep(300)
def boo():
print(f' boo!')
def what_ever_function():
print(f'do whatever function user input at run time.')
我想做的是執行foo(),然后立即執行boo(),或者what_ever_function()無需等待 300 秒foo()即可完成。
想象一下 Ipython 中的作業流程:
>>> foo()
i am working come back in 5mins
>>> boo()
boo!
這個想法是在執行之后foo(),我可以使用用戶提示立即運行另一個功能;任何可能的功能;無需等待 300 秒foo()即可完成。
我已經嘗試過 googleing: https ://docs.python.org/3/library/asyncio.html 和 https://docs.python.org/3/library/threading.html#
但仍然無法完成上述任務。
請問有什么指點或幫助嗎?
謝謝
uj5u.com熱心網友回復:
如果你使用 asyncio,你應該使用asyncio.sleep而不是time.sleep因為它會阻塞 asycio 事件回圈。這是一個作業示例:
import asyncio
async def foo():
print("Waiting...")
await asyncio.sleep(5)
print("Done waiting!")
async def bar():
print("Hello, world!")
async def main():
t1 = asyncio.create_task(foo())
await asyncio.sleep(1)
t2 = asyncio.create_task(bar())
await t1, t2
if __name__ == "__main__":
asyncio.run(main())
在這個例子中,foo并發bar運行:bardoes execute while fooalso do。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/417316.html
標籤:
