Многопроцессорность, потоки или asyncio для загрузки файлов, (не) сжатие и работа с файлами - PullRequest
0 голосов
/ 18 апреля 2020

Я планирую переписать мой старый Python2 .7 скрипт, который загружает файлы и выполняет кучу операций для каждого файла в зависимости от содержимого. Это может потребовать распаковки (.tar.gz, .zip, .7z), повторного сжатия и манипулирования файлами.

Я хочу запускать каждую задачу параллельно. Обычно одной задачей является: 1) загрузить файл 2) извлечь 3) выполнить манипуляции с файлами, если необходимо 4) повторно сжать.

Я знаю о GIL, но с другой стороны, вышеуказанные операции ждут Операции ввода-вывода для завершения, чтобы потоки могли быть одним из вариантов?

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

Какой будет самый чистый подход? Просто использовать многопроцессорность для каждой задачи?

...