在“等待”时处理循环的下一个迭代

时间:2018-08-10 15:15:58

标签: python asynchronous

我正在研究Python 3.5+中添加的新async关键字,但是我尝试使用async来解决问题。这是一个简单的示例:

from aiohttp import ClientSession
session = ClientSession()
for x in data:
  # x=LOTS OF POST DATA
  async with session.post("my-url.com", data=x) as response:
    # START THE NEXT ITERATION OF THE LOOP NOW
    rep = await response.read()
    ...
    # DO SOME WORK WITH THE RESPONSE

这里的问题是,它不会停止下一个迭代,而是会暂停线程。

我知道立即运行所有URL并将它们放入期货中以供以后遍历所有URL进行后期处理的方法,但是我想在响应准备好后进行处理,而不是稍后全部处理

在等待响应准备就绪时,是否有其他方法可以防止浪费时间?理想情况下,当它等待网络IO时,我希望脚本开始排队运行更多响应。由于要发布的数据需要一段时间才能上传。

如果不清楚,请告诉我,我会尽力回答。谢谢!

0 个答案:

没有答案