gui应用程序的简单线程和多处理

async_gui的Python项目详细描述


异步图形用户界面

async_gui是一个旨在简化gui应用程序中线程使用的库。 它的灵感来自于Pycon的谈话 Using futures for async GUI programming in Python 3.3 以及tornado@gen.engine实现。

大多数gui工具包不允许您从非gui线程访问图形元素。 python 3.2+有很好的新特性concurrent.futures,但我们不能只是 等待将来的结果,回调不是很方便。

Coroutines via Enhanced Generators (PEP-342)组合 并且futures创建了一个丰富且易于使用的异步编程模型 它可以用于创建高响应的gui应用程序。

示例

按钮单击处理程序演示:

@engine.asyncdefon_button_click(self,*args):self.status_label.setText("Downloading image...")# Run single task in separate threadimage_data=yieldTask(self.load_url,"http://www.google.com/images/srpr/logo4w.png")pixmap=QtGui.QPixmap.fromImage(QtGui.QImage.fromData(image_data))self.image_label.setPixmap(pixmap)self.status_label.setText("Downloading pages...")urls=['http://www.google.com','http://www.yandex.ru','http://www.python.org']# Run multiple task simultaneously in thread poolpages=yield[Task(self.load_url,url)forurlinurls]self.status_label.setText("Done")avg_size=sum(map(len,pages))/len(pages)self.result_label.setText("Average page size: %s"%avg_size)

从线程池中执行的on_button_click()生成的任务,但是 在gui线程中完成gui更新。 对于CPU绑定的应用程序,还可以在 过程。

full exampleexamples目录中。

功能

  • python 2.7+(需要futures), python 3+支持
  • pyqt4/pyside、tk、wx、gtk gui工具包支持。易于添加另一个
  • 可以在thread、process、greenlet中执行任务(需要gevent
  • 同时运行多个任务的可能性
  • 简单的异常处理
  • 全面测试覆盖率

安装

使用pip

$ pip install async_gui

或者下载、解包并:

$ python setup.py install

要运行测试,请使用:

$ python setup.py test

历史记录

0.2.0(2013-0X-XX)

  • 多任务可以返回准备好的任务生成器,而不是等待所有任务完成

0.1.0(2013-04-06)

  • 初始PYPI版本

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

推荐PyPI第三方库


热门话题
java Springboot数据JPA findByDate()   java是否可以有多个顶级树节点?   javahibernatehql。子查询中的多个   使用Twilio验证java Keyclope电话号码   java重写对象的toString()表示返回意外的符号   java Android最多每15分钟调用一个方法,否则使用保存的数据   在java swing中突出显示jeditorpane中的一些单词   java将时间戳转换为UTC时区   由于main中存在ArrayIndexOutOfBoundsException,导致java编译错误   java如何通过requestscope获取对象内部对象的值?   java访问安卓代码内的网站并检索生成的图像   java这种日期格式的模式是什么?   java解析包含超链接的xml字符串