python paralell_Python的快速并行版本 PyParallel

软件介绍

PyParallel是Trent Nelson发起的一个研究项目,其目标是以提供高性能异步支持的方式将WindowsI/O完成端口(IOCP)的强大功能移到Python中。

Python的异步支持多少有点问题。它是围绕Unix/Linux的异步、非阻塞I/O理念设计的。线程会持续轮询进入的数据,然后相应进行分 发。尽管Linux针对该模式进行了调优,但在Windows机器上,这种处理方式是性能的灾难。将数据从轮询线程复制到真正处理任务的线程,非常昂贵。

PyParallel带来的就是使用了原生IOCP的真正的异步。在IOCP模型下,每个核有一个线程。每个线程负责处理完成I/O请求(比如,从网卡复制数据)和执行请求关联的应用层回调。

只有这一点尚不足以横向扩展Python;还需要解决GIL(Global Interpreter Lock,全局解释器锁)带来的问题。否则我们仍然被限制于每次执行一个线程。使用细粒度的锁替换GIL,结果会更糟糕;像PyPy中的软件事务内存往往 最终会导致1个线程继续推进,N-1个线程持续重试的问题。所以我们需要别的解决方案。

对PyParallel团队来说,这个解决方案就是不允许自由创建线程。换言之,应用不能随意创建新线程。相反,并行操作被绑定到异步回调机制和并行上下文(parallel context)的概念。

在深入并行上下文之前,我们先反过来看一下。当并行上下文不运行的时候,主线程会运行;反之亦然。主线程就是你进行正常的Python开发所考虑的东西。主线程持有GIL,对全局命名空间具有完全的访问权限。

相反,并行上下文对全局命名空间只能进行只读访问。这意味着,开发者需要注意某个事物是主线程对象还是并行上下文对象。处理过套间线程模型(apartm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值