Tôi cần khởi chạy một số quy trình chạy dài với subprocess.Popen
và muốn có các số stdout
và stderr
từ mỗi đường ống tự động để tách các tệp nhật ký. Mỗi quá trình sẽ chạy đồng thời trong vài phút và tôi muốn hai tệp nhật ký (stdout
và stderr
) cho mỗi quá trình được ghi vào khi các quy trình chạy.đầu ra đường ống của quy trình con.Chọn các tệp
Tôi có cần phải liên tục gọi p.communicate()
trên mỗi quá trình trong một vòng lặp để cập nhật mỗi file log, hoặc là có một số cách để gọi ban đầu Popen
lệnh để stdout
và stderr
sẽ tự động được xem trực tiếp để mở xử lý tập tin?
Cảm ơn. Tôi có thể đã thề rằng tôi đã thử điều đó trước đây và có một lỗi, nhưng đó chính xác là những gì tôi đã hy vọng sẽ làm việc. –
Điều đó không hiệu quả đối với tôi. Tôi đồng thời chạy hai quy trình và lưu stdout và stderr từ cả hai vào một tệp nhật ký. Nếu đầu ra quá lớn, một trong các quy trình con bị treo; không biết cái nào. Tôi không thể sử dụng định dạng trong nhận xét vì vậy tôi sẽ thêm "câu trả lời" bên dưới. – jasper77