Форум сайта python.su
У меня асинхронно читаются файлы с диска (их всего порядка 200 штук), накапливая информацию из них в оперативной памяти. Поэтому чтобы не забилась память хочется ограничить количество одновременно читаемых файлов двумя штуками. Есть какой- то способ, чтобы это сделать?
Офлайн
Используй потоки.
Офлайн
https://docs.python.org/3/library/asyncio-sync.html#asyncio.Semaphore
https://docs.python.org/3/library/asyncio-sync.html#asyncio.BoundedSemaphore
[code python][/code]
Офлайн
RodegastАсинхронность придумали не зря: программист сам указывает когда сделать переключение на другую задачу. А в случае потоков / процессов это делает ос в произвольные (а значит неоптимальные!) моменты времени. Причем совершенно не факт, что переключение происходит именно в момент ожидания: ос не анализирует ждет поток данные из памяти, с диска или “перемалывает цифры”, а тупо через определенный квант времени предоставляет ядро процессора другому потоку / процессу.
Используй потоки.
Офлайн
Офлайн
> Асинхронность придумали не зря: программист сам указывает когда сделать переключение на другую задачу.
Асинхронность придумали не для этого.
> А в случае потоков / процессов это делает ос в произвольные (а значит неоптимальные!) моменты времени
Твоя программа будет работать не в “вакууме”, параллельно с ней могут быть запущены тысячи сторонних процессов. По этому ты не можешь предсказать какой момент времени будет оптимальным, а какой нет.
> ос не анализирует ждет поток данные из памяти, с диска или “перемалывает цифры”, а тупо через определенный квант времени предоставляет ядро процессора другому потоку / процессу.
Да ладно? В ядро встроено несколько планировщиков задач и планировщиков ввода-вывода. Они не просто переключает контекст, а работает по довольно сложному алгоритму.
Офлайн