Распараллеливание оболочки + Python проблема чтения / записи файла - PullRequest
0 голосов
/ 23 апреля 2020

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

После обработки этих файлов выходные файлы ДАЛЕЕ обрабатываются сценарием Python.

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

Call shell script, processing thousands of files.
Once finished, call Python script, processing even more files.
Once finished, call SQL script to insert all of these files into a database.

Если возможно распараллелить или как группу (одна файловая оболочка -> Python -> SQL) или распараллелить каждую задачу (Параллельная оболочка, Параллель Python, Параллель SQL), это было бы здорово. Хотя все, что я прочитал, похоже, подразумевает, что это логистический кошмар из-за проблем с R / W. Это правда, и если нет каких-либо точек в правильном направлении?

1 Ответ

0 голосов
/ 24 апреля 2020

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

Пример:

echo dir1 dir2 dir3 | xargs -P 3 -I NAME tar czf NAME.tar.gz NAME

Ключ -P - скажем, xargs запускает 3 параллельных процесса.

Для python вы можете использовать ThreadPoolExecutor ! из фьючерсов.

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

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