OP hỏi về việc tháo gỡ matplotlib
các lô. Hầu hết các câu trả lời giả định thực thi lệnh từ bên trong một trình thông dịch python. Ca sử dụng được trình bày ở đây là ưu tiên của tôi để kiểm tra mã trong một thiết bị đầu cuối (ví dụ bash) trong đó a file.py
được chạy và bạn muốn (các) cốt truyện xuất hiện nhưng tập lệnh python hoàn thành và quay lại dấu nhắc lệnh.
Tệp độc lập này sử dụng multiprocessing
để khởi chạy một quy trình riêng để vẽ dữ liệu matplotlib
. Các chủ đề chính thoát ra bằng cách sử dụng os._exit(1)
đề cập trong bài viết này . Các os._exit()
lực lượng chính để thoát nhưng để matplotlib
quá trình con sống và đáp ứng cho đến khi cửa sổ cốt truyện được đóng lại. Đó là một quá trình riêng biệt hoàn toàn.
Cách tiếp cận này hơi giống với phiên phát triển Matlab với các cửa sổ hình xuất hiện với dấu nhắc lệnh phản hồi. Với phương pháp này, bạn đã mất tất cả liên lạc với quy trình cửa sổ hình, nhưng, điều đó ổn cho việc phát triển và gỡ lỗi. Chỉ cần đóng cửa sổ và tiếp tục thử nghiệm.
multiprocessing
được thiết kế để thực thi mã chỉ python khiến nó có lẽ phù hợp hơn subprocess
. multiprocessing
là đa nền tảng nên điều này sẽ hoạt động tốt trong Windows hoặc Mac với ít hoặc không cần điều chỉnh. Không cần phải kiểm tra hệ điều hành cơ bản. Điều này đã được thử nghiệm trên linux, Ubuntu 18.04LTS.
#!/usr/bin/python3
import time
import multiprocessing
import os
def plot_graph(data):
from matplotlib.pyplot import plot, draw, show
print("entered plot_graph()")
plot(data)
show() # this will block and remain a viable process as long as the figure window is open
print("exiting plot_graph() process")
if __name__ == "__main__":
print("starting __main__")
multiprocessing.Process(target=plot_graph, args=([1, 2, 3],)).start()
time.sleep(5)
print("exiting main")
os._exit(0) # this exits immediately with no cleanup or buffer flushing
Chạy file.py
sẽ xuất hiện một cửa sổ hình, sau đó __main__
thoát nhưng cửa sổ multiprocessing
+ matplotlib
hình vẫn phản hồi với các nút thu phóng, xoay và các nút khác vì đây là một quá trình độc lập.
Kiểm tra các quy trình tại dấu nhắc lệnh bash với:
ps ax|grep -v grep |grep file.py
ion()
sửa lỗi.