Bir sunucuda oluşturulacak soket üzerinden, stdout'u yayınlayan bir sunucuda uzaktan yürütecek bir yürütme ortamı/kabuğu oluşturmaya çalışıyorum. Şu anda PIPE
ile subprocess.run
'u kullanma yaklaşımını denedim. Sorun, işlem tamamlandıktan sonra stdout'u almamdır. Benim elde etmek istediğim, line-by-line, sözde terminal uygulamasıdır.Canlı konsol oluşturmak için python'un pty'sini kullanın
Benim şu anki uygulama
def greeter():
for _ in range(10):
print('hello world')
greeter()
ve kabuğunda
test.py
>>> import subprocess >>> result = subprocess.run(['python3', 'test.py'], stdout=subprocess.PIPE) >>> print(result.stdout.decode('utf-8')) hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world
i, nasıl
pty
ile bile bu basit uygulama girişiminde çalışırsanız bir tane mi?
Bunu kontrol edin: https://stackoverflow.com/questions/1606795/catching-stdout-in-realtime-from-subprocess –
Satır arabelleğini ayarlamak için altprocess 'bufsize = 1' parametresini kullanmayı deneyin ve' iter kullanın (result.stdout.readline, b '') 'True loop – Vinny