2017-01-05 3 views
0

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

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

ли многопроцессорной правильный метод для этого вида обработки, или есть другой способ достижения этих результатов, которые были бы лучше, как этот ответ: Run multiple python scripts concurrently

+1

Я думаю, что вы уже ответили на свой вопрос ... Если у вас уже есть сценарии написаны, как вы хотите их, самый простой вариант, скорее всего, назвать их всех с помощью сценарий оболочки. С bash завершение команды с '&' начнет процесс в фоновом режиме, так что многие могут быть запущены сразу. В Windows вы вызываете 'start/b python script.py' – Aaron

+0

Как это будет работать, если я хочу, чтобы программа была EXE? –

+0

в вашем пакетном файле ... 'start/b someprogram.exe' – Aaron

ответ

0

Вы также можете использовать что-то вроде Celery для запуска задачи асинхр и вы сможете вызывать задачи из своего кода python, а не через оболочку.

0

Это зависит. С помощью multiprocessing вы можете создать диспетчер процессов, чтобы он мог создавать процессы так, как вы хотите, но есть более гибкие способы сделать это без кодирования. Многопроцессорность обычно сложна.

Отъезд circus, это менеджер процессов, написанный на Python, который вы можете использовать в качестве библиотеки, автономной или с помощью удаленного API. Вы можете определить привязки для моделирования зависимостей между процессами, see docs.

Простая конфигурация может быть:

[watcher:one-shot-script] 
cmd = python script.py 
numprocesses = 1 
warmup_delay = 30 

[watcher:snapshots] 
cmd = python snapshots.py 
numprocesses = 1 
warmup_delay = 30 

[watcher:hash] 
cmd = python hashing.py 
numprocesses = 1 
+0

Как это будет работать, если я хочу, чтобы программа была EXE? Будет ли цирк работать таким образом? –

+0

Нет, цирк - это демон linux. Если вы хотите EXE, я боюсь, что вам придется писать его с многопроцессорной обработкой. – charli

Смежные вопросы