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

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在ElasticSearch中插入条目的最佳方式是什么?   如何使用java播放视频并从中捕获帧   断言在Java良好实践中主动抛出断言错误?   swing Java编译有没有办法告诉编译器忽略部分代码?   java如何在执行另一个测试之后执行一个测试?   java添加两个数字链表   java如何通过代码编辑awt文本字段   jade无效缩进上的java错误;应为0个空格   java我可以在不安装facebook的情况下使用Android版facebook sdk。apk?   java现实地说,我为什么要使用DuckType或控制反转?   Java性能:Java逻辑从巨大的列表中找到最高的3个数字   java使用Lucene/Solr和Spring数据   java按照线程启动的顺序完成线程   java无法解析hibernate。cfg。脱机时使用xml