我正在使用appJar制作一个应用程序来查看汽车的CAN数据。我让一个线程获取CAN缓冲区,然后使用queueFucntion将其发送到主循环。排队到主循环的函数迭代抛出缓冲区,并将数据发送到具有与数据相同的地址的标签。
我发现可以重载主循环队列(raise Full)。当我对发送到主队列的函数进行计时时,它的运行时间大约为4ms,但是当我添加一个与消息匹配的标签时,它的运行时间最长可达100ms。
我认为这意味着setLabel方法需要很长的时间。我想知道有没有更快的方法。最终,更快的setLabel实际上不会解决我的问题,但它会有所帮助
更新
我使用wing personal 7作为python的IDE,当我从wing外部运行我的程序时,我的代码运行得更快,并且没有溢出,但我的问题仍然存在。
更新x2
我通过劫持作为父模块的模块,在模块级别实现了消息过滤。这帮助了一个垃圾吨,但当我的应用程序运行时,它开始在汽车和输出之间产生延迟,我认为这意味着缓冲区正在填满。
发布于 2020-07-27 06:35:28
我发现gui.addLabel()返回实际的label对象。
使用gui.setLable(title, text)时,appJar使用小部件管理器类搜索所创建的标签对象的字典,这些对象的关键字与标题setLabel相匹配,并使用.config(text=text)设置该字节值
因此,基本上您可以通过自己跟踪标签并使用
yourLabelHere.config(text='Your string here')
从理论上讲,这是更快的,但在实践中,我真的不知道
https://stackoverflow.com/questions/63105212
复制相似问题