Мне нужно получить информацию из команды bash, которая занимает несколько секунд. Я хочу, чтобы остальная часть программы продолжалась, пока я не получу код возврата. Я пытался сделать это с многопроцессорной обработкой, но я не могу получить код возврата подпроцесса, хотя консоль печатает правильный код возврата.Выполнение команды Bash в новом процессе
from multiprocessing import Process, Value
import subprocess
num = Value("d", 0.0)
class foo(object):
def __init__(self):
self.createProcess()
def createProcess(self):
p = Process(target=self.Process, args=(num,))
p.start()
...Do Stuff here in parallel...
def Process(self,n):
somebashParam = int(n.value)
p = subprocess.Popen("some -command"+str(somebashParam),shell=True)
out, err = p.communicate()
n.value = p.returncode
- почему консоль распечатывает правый код возврата, но я не могу взять его?
- Мне кажется странным запускать подпроцесс в другом новом Процессе. Есть ли способ лучше?
Почему вы проголосуете за процесс? Разве это не имеет смысла просто 'do_something_else()', а затем 'process.wait()'? – hek2mgl
@ hek2mgl: это зависит от того, как вы хотите дождаться результата. – Daniel
Что это значит? – hek2mgl