python asyncio 在这种情况下,我是否必须在所有代码中写入"await"?有没有更有效的方法?



有一个关于键盘输入的类,在键入以下键后等待几秒钟:

class Keyboard:
async def sendpacket(self, keyvalue, s):
print(f"keyboard write{keyvalue}")
await asyncio.sleep(s)

key = Keyboard()
async def caseA():
if random.randint(0,5) == 1:
await key.sendpacket('a', 0.4)
await key.sendpacket('o', 0.8)
else:
await key.sendpacket('b', 1)
await key.sendpacket('b', 0.5)
await key.sendpacket('b', 0.5)
await key.sendpacket('5', 0.1)
await key.sendpacket('y', 0.1)
await key.sendpacket('e', 0.1)
await key.sendpacket('i', 0.1)
await key.sendpacket('a', 0.2)
for i in range(5):
await key.sendpacket('f', 0.5)
await key.sendpacket('1', 0.5)
await key.sendpacket('2', 0.5)
await key.sendpacket('e', 0.5)
await key.sendpacket('i', 1)
await key.sendpacket('a', 2)
.
.
.

async def caseB():
while True:
x = random.randint(1, 5)
print(x)
await asyncio.sleep(x)
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.gather(caseA(),caseB()))

当键函数非常像caseA时,我是否应该继续为所有功能写"等待"?有没有省略的方法或者更好的方法?

没有办法省略await。在本例中,您显然可以使用for循环来压缩它们,但必须在返回可用值的函数(如异步函数(之前编写await

最新更新