在不使用input()的情况下在python中等待的有效方法?

时间:2019-01-04 09:29:27

标签: python wait

我有一个python脚本,在其中我使用另一个库中的侦听器来等待并侦听发生的事件(然后由我的脚本处理)。在开发中,我在脚本的末尾使用了input()语句(在True循环中),以有效地使脚本保持活动状态,而不进行任何操作(等待事件除外)。但是,既然我已将其放入systemd服务中,由于系统服务不应包含任何控制台IO,因此input()会因EOF而失败。在这里实现无穷循环的“好”或pythonic方法是什么?我可以进行const localStorageMock = { getItem: jest.fn(), setItem: jest.fn(), clear: jest.fn(), } global.localStorage = localStorageMock while True: pass的操作,但第一个操作会消耗CPU,而第二个操作似乎会变黑。

1 个答案:

答案 0 :(得分:1)

请参阅有关coroutines的官方文档。

示例:

import time, asyncio

async def run_task():
    for i in range(5):
        print('running task %d' % i)
        await awaiting_task(i)

async def awaiting_task(name):
    time.sleep(5) # wait for 5 seconds
    print('task %s finished' % str(name))

asyncio.run(run_task())

async语法会将函数转换为协程,如果可能,则可以节省CPU,而不是忙于等待。