我有一个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,而第二个操作似乎会变黑。
答案 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,而不是忙于等待。