@kaveri571

Ограничие asyncio task по памяти?

Есть дамп данных размером 4 гб, дамп читаю построчно и добавляю задачи в asyncio task. Создается около 2х миллионов задач в памяти, что естественно памяти не хватает. Как ограничить asyncio task к примеру до 10 000, чтобы после выполнения их, создались новые task из дампа, то есть разбить чтение дампа на части. Задача стоит огромный дамп (который сначала подредактировать) положить в базу данных.
async def main(path, engine):
    tasks = []
    with jsonlines.open(path) as reader:
        for inx, obj in enumerate(reader, start=1):
            task = asyncio.create_task(load_today_db(engine=engine, obj=obj))
            tasks.append(task)
        await asyncio.gather(*tasks)
  • Вопрос задан
  • 362 просмотра
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Задача совсем несложная, используйте очереди! https://docs.python.org/3/library/asyncio-queue.html
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы