Tôi mới dùng IPython và muốn in kết quả trung gian thành stdout trong khi chạy các chức năng cụm song song IPython. (Tôi biết rằng với nhiều quy trình, điều này có thể làm xáo trộn đầu ra, nhưng điều đó là tốt - nó chỉ để thử nghiệm/gỡ lỗi, và các tiến trình tôi muốn chạy đủ dài đến mức không thể xảy ra xung đột.) Tôi đã kiểm tra tài liệu cho IPython nhưng không thể tìm thấy một ví dụ mà các chức năng song song in. Về cơ bản, tôi đang tìm kiếm một cách để chuyển hướng đầu ra in của subprocesses đến stdout chính, tương đương với IPython củaIn ấn để stdout trong các quy trình song song IPython
subprocess.Popen(... , stdout=...)
In ấn bên trong quá trình này không hoạt động:
rc = Client()
dview = rc()
def ff(x):
print(x)
return x**2
sync = dview.map_sync(ff,[1,2,3,4])
print('sync res=%s'%repr(sync))
async = dview.map_async(ff,[1,2,3,4])
print('async res=%s'%repr(async))
print(async.display_outputs())
trả về
sync res=[1, 4, 9, 16]
async res=[1, 4, 9, 16]
Do đó việc tính toán thực thi chính xác, nhưng lệnh in trong hàm ff không bao giờ được in, ngay cả khi tất cả các quy trình đều trả về d. Tôi đang làm gì sai? Làm cách nào để in "in"?
Câu trả lời rất hữu ích. Có cách nào để xem bản in ra khi tính toán đang diễn ra không? – spencerlyon2
có - đối với các câu lệnh in, chỉ cần thực hiện 'out in asyncresult.stdout: in ra', bạn có thể thực hiện bất kỳ lúc nào, ngay cả khi đầu ra là một phần. – minrk
Có cách nào để đạt được điều này mà không có quyền truy cập vào mã nguồn không? Có một thư viện mà tôi đang sử dụng để in các thông điệp tường trình trong các chủ đề, và tôi muốn nó in khi nó chạy. Tôi có phải mở rộng một trong các lớp của IPython để làm điều này không? – hgcrpd