我想在不中斷回圈的情況下運行回圈并使用 time.sleep() 從函式回傳一些值。
如何讓函式和回圈同時作業?
函式 prt_1 使用 time.sleep(5)。這次我不想在回圈中等待。我需要回圈在函式休眠時繼續運行
import time
def prt_1(i):
while True:
print(f"AAA_{i}")
time.sleep(5)
for i in range(100):
print(i)
prt_1(i)
time.sleep(0.5)
得到這樣的東西:
0
AAA_0
1
2
3
4
5
AAA_5
uj5u.com熱心網友回復:
通過將每個回圈放在單獨的執行緒中,這將是您正在尋找的答案:
from threading import Thread
import time
def prt_1(i):
while True:
print(f"AAA_{i}")
time.sleep(5)
for i in range(100):
thread = Thread(target=prt_1, args=(i,))
thread.start()
time.sleep(0.5)
uj5u.com熱心網友回復:
例如,您可以查看“asyncio”來創建可以并發運行的方法。
這將滿足您的需求(如果我理解正確的話)!
import asyncio
async def prt_1(i):
while True:
print(f"AAA_{i}")
await asyncio.sleep(5)
async def main():
for i in range(100):
print(i)
asyncio.create_task(prt_1(i))
await asyncio.sleep(0.5)
asyncio.run(main())
Asyncio.create_task 將呼叫您的函式并讓它與回圈同時運行。而且您還必須進行修改,使該函式成為“異步”函式,并且回圈也是一體的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/399891.html
標籤:Python 多线程 python-多线程
上一篇:Java執行緒同步
下一篇:C 參考包裝器作為函式引數
