Запустите python в отдельном процессе - PullRequest
6 голосов
/ 02 июня 2010

Я ищу быстрый bash-скрипт или программу, которая позволила бы мне запустить python-скрипт в отдельном процессе. Какой лучший способ сделать это? Я знаю, что это невероятно просто, просто любопытно, есть ли предпочтительный способ сделать это.

Ответы [ 4 ]

18 голосов
/ 02 июня 2010

Просто используйте амперсанд (&), чтобы запустить процесс Python в фоновом режиме. Python уже выполняется в отдельном процессе от BASH-скрипта, поэтому говорить о его запуске «в отдельном потоке» не имеет особого смысла - я предполагаю, что вы просто хотите, чтобы он работал в фоновом режиме:

#! /bin/bash
python path/to/python/program.py &

Обратите внимание, что приведенное выше может привести к печати текста на консоли. Вы можете обойти это, используя перенаправление, чтобы перенаправить как stdout, так и stderr в файл. Например:

#! /bin/bash
python path/to/python/program.py > results.txt 2> errors.log &
4 голосов
/ 02 июня 2010

Лучший способ сделать это - сделать это на python! Взгляните на многопроцессорные библиотеки .

Вот простой пример по ссылкам выше:

from multiprocessing import Process

def f(name):
    print 'hello', name

if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()
3 голосов
/ 02 июня 2010

bash на самом деле не работает с потоками - он действительно обрабатывает просто отлично, хотя:

python whatever.py &

& в конце означает просто "не ждите окончания подпроцесса" - bash в любом случае выполнит саму команду в отдельном процессе, просто обычно он ожидает, что этот отдельный процесс прекратить (все оболочки Unix работают таким образом с незапамятных времен).

2 голосов
/ 02 июня 2010

Ваш жаргон все в замешательстве. Но в bash вы можете запустить процесс в background , добавив &:

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