Я пытаюсь запустить две разные команды, используя подпроцессный модуль python, перехватить вывод из них и распечатать его в консоли ...
XY_thread = Thread (target = run_command_XY)
TEXT_thread =Thread (target = run_command_text)
XY_thread.start ()
TEXT_thread.start ()
, поэтому я получаю выходные данные из XY_thread, а не из TEXT_thread.Когда я чередую потоки и запускаю сначала TEXT_thread, то отображается только вывод TEXT_thread ..
Я поражен, пожалуйста, помогите.Я что-то здесь упускаю?
import subprocess
from subprocess import Popen, PIPE
from threading import Thread
def run_command_text():
command = "SOME COMMAND"
process_ = Popen(command.split(), stdout = PIPE, shell = False)
prev_line = None
retcode = process_.poll()
while(process_.poll() == None):
line_ = process_.stdout.readline().decode('utf-8')
if "SOME CONDITION" in line_:
# does some operation and fetches the text(no issues with this part)
if text != "":
print(text)
prev_line = line_
if retcode is not None:
break
def run_command_XY():
command = "SOME COMMAND"
process = Popen(command.split(), stdout = PIPE, shell = False)
retcode = process.poll()
while(process.poll() == None):
line = process.stdout.readline().decode('utf-8')
# does some operation and fetches the X and Y(no issues with this part)
print(X+" "+Y)
if retcode is not None:
break
if __name__ == '__main__':
# multiprocessor = list()
XY_thread = Thread(target = run_command_XY)
TEXT_thread = Thread(target = run_command_text)
XY_thread.start()
TEXT_thread.start()
Итак, когда я запускаю оба этих метода по отдельности, они выполняют свою работу, как и ожидалось, но когда я пытаюсь запустить их параллельно, а затем печатать оба вывода, тампохоже проблема.(Пожалуйста, игнорируйте отступы)