Найти - Пользователи
Полная версия: Как ограничить количество паралельных коррутин, запускаемых asincio?
Начало » Python для экспертов » Как ограничить количество паралельных коррутин, запускаемых asincio?
1
AlekseyPy
У меня асинхронно читаются файлы с диска (их всего порядка 200 штук), накапливая информацию из них в оперативной памяти. Поэтому чтобы не забилась память хочется ограничить количество одновременно читаемых файлов двумя штуками. Есть какой- то способ, чтобы это сделать?
Rodegast
Используй потоки.
AlekseyPy
Rodegast
Используй потоки.
Асинхронность придумали не зря: программист сам указывает когда сделать переключение на другую задачу. А в случае потоков / процессов это делает ос в произвольные (а значит неоптимальные!) моменты времени. Причем совершенно не факт, что переключение происходит именно в момент ожидания: ос не анализирует ждет поток данные из памяти, с диска или “перемалывает цифры”, а тупо через определенный квант времени предоставляет ядро процессора другому потоку / процессу.
Rodegast
> Асинхронность придумали не зря: программист сам указывает когда сделать переключение на другую задачу.

Асинхронность придумали не для этого.

> А в случае потоков / процессов это делает ос в произвольные (а значит неоптимальные!) моменты времени

Твоя программа будет работать не в “вакууме”, параллельно с ней могут быть запущены тысячи сторонних процессов. По этому ты не можешь предсказать какой момент времени будет оптимальным, а какой нет.

> ос не анализирует ждет поток данные из памяти, с диска или “перемалывает цифры”, а тупо через определенный квант времени предоставляет ядро процессора другому потоку / процессу.

Да ладно? В ядро встроено несколько планировщиков задач и планировщиков ввода-вывода. Они не просто переключает контекст, а работает по довольно сложному алгоритму.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB