用于简单绘图的异步客户机服务器库。

asyncplot的Python项目详细描述


异步绘图仪

简单的双进程客户机/服务器绘图,具有以下功能:

  • 绘图不会减慢计算速度。
  • 用户维护计算控制(即键盘中断工作)。
  • 从服务器自动启动客户端。
    • 用户在(picklable)类中定义打印代码,并且 向server()构造函数提供类。服务器通过pickled绘图仪 在新的python解释器中启动客户端进程时发送给客户端。 客户端的python解释器命令行选项传递给服务器 实例化时的构造函数。默认值为: (例如。[“ipython”、“–pylab=osx”、“-c”])

待办事项

使用sockets的异步绘制与单独进程的原型

仍然需要:

  • 全面测试
  • 日志记录(以调试模式打印调试消息以检查网络问题)
  • 配置文件性能。
  • 配置(主机名、端口规格等)

我认为这些问题已经解决了,但它们需要测试:

  • 套接字缓冲区溢出(recv)
  • 清除线程和套接字命令行终止
  • 错误处理。例如,当客户端断开连接时,服务器侦听将继续, 网络错误
  • 多个客户端(打印)

其他设计方法

线程解决方案

最简单的方法是多线程方法。原则上,可以运行 在主线程中计算并在单独线程中打印。这个 解决方案是在thread.py中绘制的,但在大多数matplotlib后端失败 因为他们需要在主线程中运行。快速解决是 在辅助线程中运行计算,但这会阻止用户 能够中断计算。

python gil的一个很好的特性是 共享数据(谨慎的解决方案需要锁等)

多处理解决方案

同样的解决方案也适用于multiprocessing,但在我的 开发平台(Mac OS X 10.5),错误如下:

The process has forked and you cannot use this CoreFoundation
functionality safely. You MUST exec().
Break on
__THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.

单独的过程

似乎最可靠的解决方案是有计算和绘图仪 在完全独立的进程中运行。这还有一个额外的好处:

  • 用户可以远程绘图。

这里需要解决的一个问题(以及multiprocessing解决方案) 是数据的复制。一个常见的用例是绘图仪可能速度较慢 而不是计算。因此,可以丢弃中间数据,而不应该 通过网络发送。

其他方法

似乎应该可以用IPython来做这件事,但我没有 找到了一个简单的方法。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java例外。Lang.Stringindexoutofboundsexception索引超出范围(0)   java Spring引导Freemarker从2.2.0升级失败   重构Java反模式名称?包含对象的对象包含。。。等   用java处理JDBC可能出现的死锁的最佳方法   java无法访问主线程上的数据库,因为它可能会在很长一段时间内锁定UI   java如何将固定大小的画布包装在边框窗格中的滚动窗格居中?   java解析xsd文件后得到空结果   在html页面中表示XML文件的java   socketjava对象流   sql Java越界异常数据库   JavaJBoss7.1.1不会在Mavericks上启动   Twincat ADS事件驱动读取在一段时间后停止工作(Java)   java MyBatis使用生成的ID插入所有   Mojave上缺少MacOS Java控制面板   JavaGuice:如果多次注入相同的依赖项,是否注入了该依赖项的相同实例?