Cython化for循环生成器的循环

时间:2014-05-31 00:00:31

标签: python for-loop generator cython coroutine

我有Python代码,它有很多循环使用来自Python生成器的数据。有些还会产生处理过的数据。这是一个瓶颈,我想加速这部分,并考虑使用Cython。

处理发电机和产量的推荐方法是什么?我想

  • 将Python生成器转换为没有数据副本的Cython
  • 使Cython for循环消耗Python生成器生成的数据
  • 像生成器一样生成数据

我猜这是一个常见的用例,推荐的方法是什么。

1 个答案:

答案 0 :(得分:7)

一些建议:

  • Cython支持开箱即用的生成器,所以你应该尝试将带有生成器的Python代码传递给cython,看看你得到了什么样的加速。
  • 下一步是在循环中添加尽可能多的静态类型信息,以加快生成器正在进行的工作。
  • Python生成器很酷,但如果性能很重要,那么它们并不是最快的做事方式。将转换瓶颈转换为使用连续数组会更好。
  • 查看Cython的键入内存视图。
  • 您还可以将Cython与C ++ std :: vectors和其他高性能容器对象一起使用。

我们需要有关您的目标和限制的更多信息,以便在此提供更多帮助。一个精简的例子会有所帮助。