Python Альтернативные подходы к дочерним процессам - PullRequest
0 голосов
/ 10 июля 2020

Я относительно новичок в Python, мне было поручено создать программу, которая будет работать как «служба» или «демон». Этот процесс будет oop просматривать набор файлов и искать новые данные для обработки. Если ничего не найдено, процесс засыпает на несколько секунд и повторно проверяет файлы.

Если три - это данные из файла, который необходимо обработать, то я хотел бы запустить дочерний процесс для обработки этого укажите файл c и данные для обработки. Если есть другой файл с данными для обработки, запустите другой дочерний процесс для такого количества файлов, в которых есть данные. Как только дочерние процессы будут запущены, родитель будет спать и перепроверить наличие новых данных. )

Я реализую это в Python 3

Есть ли рекомендуемый подход для программы этого типа?

Я нашел здесь относительно минимальный пример и через Google, и меня больше смущает подходящий подход.

Любые идеи и предложения будут признательны.

Спасибо,

1 Ответ

1 голос
/ 11 июля 2020

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

Если вы хотите использовать другой python script, вы потенциально можете использовать что-то вроде многопроцессорности, хотя использование многопроцессорности связано с большими накладными расходами, и это может быть медленнее, если задача, которую вы выполняете, не требует интенсивного использования ЦП, просто занимает много времени, например, сеть или диск IO. В таких случаях с привязкой к вводу-выводу, asyn c или многопоточность могут быть лучше для вашего варианта использования, asyn c особенно эффективен для таких вещей, и если вы планируете запускать большое количество задач с относительно низкой нагрузкой на ЦП, но с высокой привязкой к вводу-выводу, asyn c отлично подходит для этих сценариев ios. Если вам нужно запустить какую-то внешнюю программу для обработки вашего кода, вы, вероятно, захотите использовать подпроцесс. Вы также можете комбинировать эти подходы, если хотите, используя asyn c для делегирования многопроцессорным интерпретаторам для задач, связанных с ЦП, и стандартный asyn c для задач, привязанных к вводу-выводу, и смешивание некоторых потоков, если у вас есть задача, которая не поддержка python asyn c шаблон хорошо.

Для мониторинга файлов вы также можете посмотреть что-то вроде watchdog для мониторинга файлов с низким уровнем воздействия, например, опрос файла системные изменения происходят медленнее, чем просто пробуждение ОС вашего процесса, когда происходит соответствующее изменение.

Вот несколько ссылок, которые помогут вам начать:

Asyn c

Многопроцессорность

Поток

Подпроцесс

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