LINUX.ORG.RU

Как асинхронно получить список файлов в директории на Python?

 ,


0

1

Как асинхронно получить список файлов в директории на Python?
Нашел только такой вариант:
https://stackoverflow.com/questions/23894515/how-do-i-list-files-in-asyncio

Это действительно единственный способ? Либ под это дело совсем нет?

★★★★★

импорт трединг, запускаешь ф-цию получения списка файлов в отдельно треде. И вообще опиши задачу подробнее, что имеешь в виду.

Либ под это дело совсем нет?

Есть, называется Стандартная библиотека.

hakavlad ★★★
()

Запускаешь поток, получаешь список файлов, не?

peregrine ★★★★★
()
Ответ на: комментарий от hakavlad

Нужно делать это внутри асинхронной функции:

async def myfunc(param1, param2):
    # действия
    # получить список файлов
    # действия

Qwentor ★★★★★
() автор топика
Последнее исправление: Qwentor (всего исправлений: 2)
Ответ на: комментарий от Qwentor

Нужно делать это внутри асинхронной функции

Получение списка - быстрая операция. Зачем ее асинхронить?

https://stackoverflow.com/questions/23894515/how-do-i-list-files-in-asyncio

with concurrent.futures.ProcessPoolExecutor() as executor:

The asynchronous execution can be performed with threads, using ThreadPoolExecutor, or separate processes, using ProcessPoolExecutor.

Рожать отдельный процесс для полуения списка - абсурд. Процесс рождается дольше, чем получается список файлов.

hakavlad ★★★
()
Ответ на: комментарий от hakavlad

Этот список меняется, постоянно удаление/создание, поэтому не один раз при старте, а каждый раз внутри функции

Qwentor ★★★★★
() автор топика
Ответ на: комментарий от hakavlad

ага, только по ссылке он только печатается, а мне надо получить в переменную. И как это сделать пока не пойму. Действительно, что ли, через асинхронный шелл запускать команды..

Qwentor ★★★★★
() автор топика
Ответ на: комментарий от Qwentor

Этот список меняется, постоянно удаление/создание

Может, тогда inotify освоить? Для него есть и готовые врапперы под asyncio, хотя я сам ими не пользовался.

proud_anon ★★★★★
()

Это действительно единственный способ?

Да, и там написано почему.

А либ нету потому что народ считает что это быстрая операция, и почти всегда прав. Для редких случаев с огромными дирами можно юзать то что написано в стековерфлоу.

Вариант с inotify может быть лучше, а может и нет, но он совершенно точно будет сложнее

redixin ★★★★
()
Ответ на: комментарий от anonymous

Несколькими постами выше:

Рожать отдельный процесс для полуения списка - абсурд. Процесс рождается дольше, чем получается список файлов.

работа с диском

Давайте смотреть правде в глаза: это работа с кешем

redixin ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.