使用多处理包的延迟处理的一种实现。

twisted.internet.processes的Python项目详细描述


简介

python全局解释器锁(gil)对multi 通过锁定所有纯python代码来提高处理器性能。虽然 twisted中的线程支持非常出色,gil阻碍了性能 通过本质上将进程绑定到单个cpu。

为了绕过gil,python引入了多处理包 从2.6版开始。多处理程序包已被移植到 python 2.4和2.5,可从python包索引获得 (http://pypi.python.org/pypi)。多处理包提供了类似的 与python提供的线程库的接口,除了它使用 进程而不是线程。

这个包twisted.internet.processes在 多处理库并提供一个方法defertoprocess 以与deferToThread相同的方式。

实施

在reactor上创建进程池的方式与线程相同 当第一次调用deferToThread时,池在正常的反应器中创建。

最初,目标是使用非阻塞代码和 提供延迟处理方法的多处理库。不幸的是, multiprocessing.pool.apply_async在事件中不调用回调 失败的原因。为了保留失败回调,来自 包装使用异步结果集multiprocessing.pool.asyncResult 它在调用deferToThread时。线程在等待 在单独进程中调用的结果。

使用multiprocessing.pool.apply_async遵从某个进程会导致 用户代码的附加要求。所有参数和函数本身 必须可由python cpickle模块进行pickle。

许可证

版权所有2009德克萨斯农工大学

根据apache许可证2.0版(以下简称“许可证”)授权;您不能使用 此文件与许可证不符。您可以获得 许可证位于

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则软件将被分发 根据许可证,是按“原样”分发的,没有保证或 任何形式的条件,无论是明示的还是默示的。查看许可证 管理许可下的权限和限制的特定语言。

更改日志

1.0b12009/08/24

  • 初始版本
  • 由于登录2.6.2.1时出现错误,已锁定到多处理2.6.1.1或更低版本
  • 尚未测试
  • 基于包在deferToThread中的阻塞调用的deferToprocess

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

推荐PyPI第三方库


热门话题
在Java中使用工厂设计模式   解析服务器安全性的java最佳实践   java如何解决由于某种原因导致的执行失败?   关于Servlet的java   如何在java中生成一个大的(30MB+)xml文件?   匿名类重写与传递接口,用于在Java中设计回调   java jar从运行时开始。getRuntime()。exec()比从命令行运行的时间长   java Ant脚本排除文件夹(某些文件除外)   java在Windows 10计算机上运行时遇到Maven错误   java Hibernate在同一个表中级联   java PayPal API设置返回URL   java如何在选项卡的右侧显示关闭按钮   当按下Jmenu按钮时,使用java操作侦听器退出程序