Найти - Пользователи
Полная версия: Можно ли с помощью пакета Numpy асинхронно читать файлы?
Начало » Python для экспертов » Можно ли с помощью пакета Numpy асинхронно читать файлы?
1
AlekseyPy
Не нашел в их документации по чтению файлов каких- либо отсылок к асинхронности. Я правильно понимаю, что ее совсем нет в Numpy или есть какие- то хитрые трюки, позволяющие получить асинхронность при чтении файлов с помощью библиотеки NumPy?

Заранее благодарю за помощь.
PEHDOM
AlekseyPy
Я правильно понимаю, что ее совсем нет в Numpy
Да ,Numpy это не про асинхронность, мухи отдельно, асинхронность отдельно.
AlekseyPy
есть какие- то хитрые трюки, позволяющие получить асинхронность при чтении файлов с помощью библиотеки NumPy?
есть, ровно такие же как и при чтении с помощью любой другой библиотеки. Правда возникает вопрос целесообразности, так как скорость чтения с помощью asyncio на порядок меньше чем без него
https://www.confessionsofadataguy.com/python-async-file-operations-juice-worth-the-squeeze/
peterjohnee1
Thank you when you have a hard time because if you don't have it, you won't have a chance to understand yourself and experience life cookie clicker
AlekseyPy

PEHDOM
есть, ровно такие же как и при чтении с помощью любой другой библиотеки. Правда возникает вопрос целесообразности, так как скорость чтения с помощью asyncio на порядок меньше чем без него
https://www.confessionsofadataguy.com/python-async-file-operations-juice-worth-the-squeeze/

Вы пишите, что такие способы есть, но приведенный вами код полностью заменяет исходный на асинхронный. У меня другая ситуация: я не могу переписать весь NumPy.
В свое время я делал тесты скорости чтения крупных файлов и насколько мне помнится за счет 2-ух коррутин на один процесс получил прирост производительности ~ 30-40% (3-и коррутины не давали преимущества перед 2-умя). Так что asyncio рулит (если правильно пользоваться).
doza_and
AlekseyPy
мне помнится за счет 2-ух коррутин на один процесс получил прирост производительности ~ 30-40%
Очень интересно. Пришлите код. Опишите какое у вас железо. Мы специально занимались оптимизацией чтения и записи больших файлов на языке C. Многопоточность чтения существенно СНИЖАЕТ скорость ФАЙЛОВЫХ ОПЕРАЦИЙ, поскольку увеличивает потребность в репозиционировании головок жесткого диска. С SSD дисками ситуация наверное другая.

Но безусловно предоставляемые ОС операции асинхронного чтения имеют смысл при определенных сценариях использования
PEHDOM
AlekseyPy
Так что asyncio рулит (если правильно пользоваться).
так я ж не спорю, возможно, конкретно в вашей ситуации прирост и будет, лично я не мерял, за что купил за то и продаю, но вот doza_and мерял и говорит примерно тоже самое. это что касаеться ХДД, может для ССД действительно другая ситуация.
AlekseyPy
я не могу переписать весь NumPy.
Ну может весь и не надо, если хотите есть вариант:
вот линк на чтение csv https://pypi.org/project/aiofile/ (искать Async CSV Dict Reader)
там максимально понятный пример, попробйте переделать для нампи. Может чтото и получиться.
ЗЫ за скорость не гарантирую.
AlekseyPy
PEHDOM
может для ССД действительно другая ситуация
Действительно, я использовал ССД.
Хотя при работе с асинхроностью всегда надо следить, чтобы накладные расходы на использование цикла коррутин были ниже потенциальной выгоды. Например, в представленном примере файлы читаются целиком (потому что у метода read( ) не указан размер считываемого блока) и возможно они очень маленькие. Я читал большие файлы и четко указывал, что читать блоком размером 1Мбайт.
Есть видео с разбором похожего вопроса, только там асинхронность использовалась для доступа к СУБД: на легких запросах asyncio отставал от конкурентов, а на тяжелых- отрывался вперед.
AD0DE412
может быть затолкать файлы в ram? https://www.youtube.com/watch?v=ZFyM0JgLqjg
ну или memcached (ну тут понятно ограничения по объему и … хотя … не все равно спорно)
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