Tôi đang cố gắng đọc các đường từ một đường ống và xử lý chúng, nhưng tôi đang làm điều gì đó ngớ ngẩn và tôi không thể tìm ra cái gì. Nhà sản xuất sẽ tiếp tục sản xuất dòng vô thời hạn, như thế này:Python - đọc các dòng đơn giản từ một đường ống
producer.py
import time
while True:
print 'Data'
time.sleep(1)
Người tiêu dùng chỉ cần kiểm tra xem có dòng định kỳ:
consumer.py
import sys, time
while True:
line = sys.stdin.readline()
if line:
print 'Got data:', line
else:
time.sleep(1)
Khi tôi chạy điều này trong vỏ Windows là python producer.py | python consumer.py
, nó chỉ ngủ mãi mãi (không bao giờ có vẻ để có được dữ liệu?) Có vẻ như có lẽ vấn đề là sản phẩm ucer không bao giờ chấm dứt, vì nếu tôi gửi một lượng dữ liệu hữu hạn thì nó hoạt động tốt.
Làm cách nào để nhận dữ liệu và hiển thị cho người tiêu dùng? Trong ứng dụng thực tế, nhà sản xuất là một chương trình C++ mà tôi không kiểm soát được.
Bạn đã đọc câu cuối cùng của câu hỏi chưa ?? – jwg