Я недавно спросил, как получить оболочку python для получения вывода подпроцесса. и получил очень полезный ответ - т.е. подача POpen stdout = subprocess.PIPE
, затем используйте p.stdout.readline () и передайте результат в print ()
p = subprocess.Popen(args, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE, cwd=StartPath, shell=False)
it = iter(p.stdout.readline, b'')
sRet = "## decode Error ##"
for line in it:
try:
sRet = line.rstrip().decode('utf-8')
except:
pass
print(sRet[:PYTHON_WINDOW_WIDTH])
viRet = p.wait()
однако меня беспокоит то, что происходит, когда я вызываю этот POpen из нескольких потоков одновременно.
один и тот же подпроцесс. PIPE передается каждому POpen. в той степени, в которой каждая строка чтения получает результаты от обоих подпроцессов.
помимо получения несколько странных результатов, каждый цикл (для строки в нем:)
, кажется, ожидает завершения обоих подпроцессов потоков, прежде чем перейти к
это не то, что я хочу.
- Так есть ли способ, которым я могу иметь свою ТРУБУ (по одному на поток), чтобы я мог зависеть от того, что каждый поток полностью независим?
Заранее спасибо