Я ищу быстрый сценарий удара или программу, которая позволит мне начинать сценарий Python в отдельном процессе. Что лучший способ состоит в том, чтобы сделать это? Я знаю, что это невероятно просто, просто любопытно, если существует предпочтительный способ сделать это.
Просто используйте амперсанд (&), чтобы запустить процесс Python в фоновом режиме. Python уже выполняется в отдельном процессе от BASH-скрипта, поэтому говорить, что нужно запустить его "в отдельном потоке", не имеет особого смысла - я предполагаю, что вы просто хотите, чтобы он выполнялся в фоновом режиме:
#! /bin/bash
python path/to/python/program.py &
Обратите внимание, что в результате выполнения вышеуказанных действий текст может быть выведен на консоль. Вы можете обойти это, используя перенаправление, чтобы перенаправить как stdout, так и stderr в файл. For example:
#! /bin/bash
python path/to/python/program.py > results.txt 2> errors.log &
Ваш жаргон все путает. Но в bash вы можете запустить процесс в фоновом режиме, добавив &
:
print foo.py &
Лучший способ сделать это - сделать это на python! Посмотрите на многопроцессные библиотеки.
Вот простой пример из ссылок выше:
from multiprocessing import Process
def f(name):
print 'hello', name
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
bash
не умеет работать с потоками - зато он отлично справляется с процессами:
python whatever.py &
&
в конце просто означает "не ждите завершения подпроцесса" -- bash
все равно выполнит команду в отдельном процессе, просто обычно он ждет завершения этого отдельного процесса (так работают все оболочки Unix с незапамятных времен).