【问题标题】:Run function inside a loop without its stopping在循环内运行函数而不停止
【发布时间】:2021-12-29 15:54:06
【问题描述】:

我想运行循环并使用 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

【问题讨论】:

  • 您对生成器的熟悉程度如何?
  • 不太适合解决这个问题

标签: python multithreading python-multithreading


【解决方案1】:

通过将每个循环放在单独的线程中,这将是您正在寻找的答案:

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)

【讨论】:

    【解决方案2】:

    例如,您可以查看“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 将调用您的函数并让它与循环同时运行。而且您还必须修改该函数是一个“异步”函数,并且循环也是一个。

    【讨论】:

      猜你喜欢
      • 2022-01-11
      • 2018-06-22
      • 2015-10-22
      • 2017-03-16
      • 2022-08-18
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多