好的,正如问题建议的那样,我正在追逐创建情节的最佳方法:
1)独立于主程序/脚本,因此对绘图进行更改将对主程序/脚本没有不利(锁定或其他)影响
2)可以通过matplotlib的默认GUI或其他自定义GUI进行交互
现在,我对上述标准的看法是:
1)使用多处理模块及其多处理队列将X,Y信息传递给附加到当前X,Y数据并刷新绘图的单独进程。 这基本上解决了标准1。
2)确保打开matplotlib的交互模式(ion()),无限while True:
循环检查上述队列,如果没有X,Y信息,则允许通过{{1}处理GUI事件}
为简化起见,下面是我接受传入的X,Y数据并以伪代码绘制它的代码。此代码在不同的进程中运行,其中Queue为其提供X,Y数据。
pyplot.pause(interval in seconds)
以上是否可以优化以增加与图形GUI的交互性?可能通过允许GUI事件独立于正在更新的图来进行服务?这种方法变得越慢,它必须做的更新就越多(即如果同一图上有更多的图表需要更新)
任何澄清,只要问:)
答案 0 :(得分:0)
我会通过队列传递x,y数据(如已计划的那样),但会将get-command与block-argument结合使用。这样,您的绘图功能会阻塞,直到队列中有元素。如果没有,则函数暂停,并且可以处理应用程序中的所有其他事件。
类似的东西:
def process_data(inqueue):
#create your plot
for infile in iter(inqueue.get(block=True), "STOP"):
#update plot until inqueue.get returns "STOP"
#waits for elements in the queue enter code here
def main():
inqueue = Queue()
process = Process(target=process_data, args=(inqueue,)
#can be stopped by putting "STOP" via inqueue.put into the queue
process.start()
#put some data in the queue