[英]Python: async over a list
我正在嘗試編寫我的第一段異步代碼。 我已經簡化了我的用例,並且有兩個腳本——“main”和“s3_accessor”。 主腳本構建了一個值列表,然后我想將其傳遞給“build_inventory”函數。
該列表有數百個值,因此同步處理很慢。
主文件
import s3_accessor # another .py script
import asynchio
async def main():
some_list [a, b, c, d, e, f, g]
for val in some_list:
inventory_df = s3_accessor.build_inventory(val)
s3_accessor.write_df_to_s3('some_key', inventory_df)
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
s3_accessor.py
async def build_inventory(val):
...
問題:
我將如何修改此代碼以使列表上的迭代是異步的?
我嘗試將整個 for 循環部分包裝在await asyncio.wait()
中,但這似乎不是正確的方法。
如果,正如我上面所問的,您正在嘗試同時處理所有值,並且可以同時調用 s3_accessor :
async def handle_one_value(val):
inventory_df = s3_accessor.build_inventory(val)
s3_accessor.write_df_to_s3('some_key', inventory_df)
async def main():
some_list = [a, b, c, d, e, f, g]
wait asyncio.gather(*(handle_one_value(val) for val in some_list))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.