Próbuję czytać linie z rury i przetwarzać je, ale robię coś głupiego i nie mogę się dowiedzieć co. Producent ma zamiar utrzymać produkcję linii w nieskończoność, tak:Python - proste linie odczytu z rury
producer.py
import time
while True:
print 'Data'
time.sleep(1)
Konsument musi tylko sprawdzić linii okresowo:
consumer.py
import sys, time
while True:
line = sys.stdin.readline()
if line:
print 'Got data:', line
else:
time.sleep(1)
Po uruchomieniu tego w powłoce systemu Windows jako python producer.py | python consumer.py
, po prostu śpi na zawsze (nigdy nie wydaje się uzyskać danych?) Wydaje się, że może problem polega na tym, że prod ucer nigdy się nie kończy, ponieważ jeśli wyślę skończoną ilość danych, to działa dobrze.
Jak mogę uzyskać dane, które należy odebrać i pokazać je konsumentowi? W prawdziwej aplikacji producent jest programem w C++, nad którym nie mam kontroli.
Czy przeczytałeś ostatnie zdanie pytania? – jwg