Python перемещение файла программы замедляет процесс / делает асинхронное перемещение файла? - PullRequest
0 голосов
/ 05 февраля 2020

На самом деле я использую Python программу для анализа xml файлов и записи содержимого в реляционную базу данных (я разделен на узлы и все соответствующие элементы). После загрузки каждого файла я перемещаю файл в место архивирования или в место ошибки. Но команда перемещения файла shutil.move(src, dst) занимает около 200-300 мс, а процесс загрузки занимает около 60-200 мс. Размер файла составляет около 5-20 КБ на файл. Я выбираю файлы для обработки, выполнив команду xml_files = glob.glob('{}/**/*.XML'.format(path_incoming), recursive=True) Как ускорить процесс? Могу ли я поставить в очередь перемещение файлов, но затем мне нужно учитывать перемещенные в очередь файлы, чтобы они не обрабатывались повторно при выборе файлов. Любые идеи или рекомендации. Мне приходится обрабатывать около 200000 файлов в день (примерно 10 часов в POS-системе), а расположение архива tar.gzipped каждый вечер, чтобы уменьшить количество файлов. Мне просто нравится улучшать пропускную способность, чтобы получить лучший отклик. Я подумал, что, может быть, я смогу создать очередь и обработать ее вторым асинхронным процессом для перемещения файлов в архив или в место ошибки.

1 Ответ

0 голосов
/ 05 февраля 2020

Самое простое, что вам нужно сделать, это обернуть это в функцию и использовать

https://joblib.readthedocs.io/en/latest/parallel.html

Чтобы отобразить его на разные ядра / процессоры и параллельно все хрусти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...