'async with'语句中的多个变量?



是否可以在async with语句中创建多个变量

我知道等效的同步版本从这里存在:一个';带有';陈述

所以同步版本看起来是这样的:

# some files
f1 = 'tests/test_csv.csv'
f2 = 'tests/some_file.txt'
f3 = ''

with open(f1) as a, open(f2) as b:
contents_1 = a.readlines()
contents_2 = b.readlines()
print('this is contents 1:')
print(contents_1)
print('this is contents 2:')
print(contents_2)

这很好用。

但是,这会以类似的方式扩展到async版本吗?

例如:

async with A() as a, B() as b:
while True:
result_1 = await a.A()
result_2 = await b.B()
if (result_1):
print(result_1)
if (result_2):
print(result_2)

上面的方法行得通吗?如果不行,我们怎么能做到这一点?

是的,这是允许的。文档中说async with的语法与with相同,但前面有关键字async

with的规范指出,列出多个项目相当于嵌套它们。所以你的代码相当于:

async with A() as a
async with B() as b:
while True:
result_1 = await a.A()
result_2 = await b.B()
if (result_1):
print(result_1)
if (result_2):
print(result_2)

相关内容

  • 没有找到相关文章

最新更新