栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带有matplotlib的Python IPC

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带有matplotlib的Python IPC

因此,我能够以两种方式实施该项目-使用和不使用多进程。

  1. 我在PyQt GUI中有一个主进程,带有一个线程,该线程从控制C程序的帧号的管道读取。
  2. 当用户选择图(.py脚本)时,可以选择按一批图上的“执行”按钮,以将其保留在主过程中。从这一点开始,如果框架被更新,则图将被连续更新。缓慢的变化几乎是在少数图之后立即开始发生的,但对于10-20个简单的时间序列图而言,这并不是禁止的。
  3. 有一个备用按钮,允许使用其他进程进行处理。我能够使用POpen和命名管道或多重处理和多重处理队列来做到这一点。最干净的方法是使我的其他进程创建图QObjects,并使用pyqt信号,其中每个其他进程都在该进程中创建QApplications来结束,但是我必须使用ctx = mp.get_context(’spawn’ ),因为默认情况下Linux使用fork,当我创建QApplication时,它认为QApplication已在主进程中运行。这是我能够获得可预测的多重处理行为的唯一方法,在该行为中,所有matplotlib图都将在替代过程中更新。

我读到matplotlib在网络上不是线程安全的,但是,从等待队列读取的线程发出的pyqt插槽读起来似乎不错。

我选择实现方式是为了使用户能够灵活地在同一过程中打开地块,或者在另一过程中打开一批地块,而不是每个过程都预先确定数量的地块,以为可能会创建某些具有复杂更新的地块,而这些地块应该得到他们自己的过程,可以这样选择。这也比简单进程的每个进程的进程浪费更少,每个进程最少100MB,而同一进程中每个额外的进程仅需要3MB左右的额外内存。

最后一个细节是用户可能非常迅速地切换框架。我让接收进程读取并在非阻塞守护程序线程中清空队列,并仅获取最新信息。一旦发送了用于更新绘图的信号,便由绘图更新循环抓住了线程锁,并且在更新方法释放了线程锁之后,读取的守护程序再次能够发出更新。

一些基本实现示例代码:https :
//stackoverflow.com/a/49226785/8209352



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/647428.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号