为整个程序启用 Cython 分析?

     2023-03-06     194

关键词:

【中文标题】为整个程序启用 Cython 分析?【英文标题】:Enable Cython profiling for whole program? 【发布时间】:2014-12-09 17:01:55 【问题描述】:

Cython 文档说“Cython 中的分析由编译器指令控制。可以通过 Cython 装饰器为整个文件或每个函数设置它。”

是否有任何简单的方法可以为整个 Python 程序启用 Cython 分析?也就是说,有没有办法让我不必在每次想要打开和关闭分析时都将# cython: profile=True 添加到几十个文件中?

【问题讨论】:

【参考方案1】:

我相信您可以通过将命令行上的选项传递给cython 来全局设置指令。它在“如何设置指令”(http://docs.cython.org/src/reference/compilation.html#how-to-set-directives) 下文档的“编译”部分中进行了描述。

也可以使用 -X 开关在命令行上传递指令:

$ cython -X boundscheck=True ...

在命令行上传递的指令将覆盖头 cmets 中设置的指令。

如果您通过distutils (setup.py) 编译并使用cythonize 函数,您似乎可以添加选项compiler_directives,这是一个将指令名称映射到相应值的字典。我还没有找到有关此功能的文档,但它似乎是 cython 程序如何调用 cythonize 函数 (https://github.com/cython/cython/blob/master/Cython/Build/Cythonize.py#L83)。

例如

from distutils.core import setup
from Cython.Build import cythonize

setup(
    name = "My hello app",
    ext_modules = cythonize("src/*.pyx",
                            compiler_directives='profile': True)
)

【讨论】:

应该记录这个 compiler_directives 选项。我花了太长时间才找到这个。

csharp以下代码为具有指定源的整个应用程序启用cors:(代码片段)

查看详情

使用 Cython 启用并行性

】使用Cython启用并行性【英文标题】:EnablingParallelismwithCython【发布时间】:2018-04-0904:36:42【问题描述】:我正在尝试让Cython的parallel包的prange函数工作,似乎没有并行性生效。为了拥有一个MWE,我从Cython:AGuideforPythonProgrammers书... 查看详情

Microsoft 是不是为其 CRT 版本提供 .obj 文件以在 CRT 代码路径上启用整个程序优化?

...osoft是不是为其CRT版本提供.obj文件以在CRT代码路径上启用整个程序优化?【英文标题】:DoesMicrosoftmakeavailablethe.objfilesforitsCRTversionstoenablewholeprogramoptimizationonCRTcodepaths?Microsoft是否为其CRT版本提供.obj文件以在CRT代码路径上启用整... 查看详情

Cython 代码分析

】Cython代码分析【英文标题】:ProfilingofCythoncode【发布时间】:2015-11-0911:18:26【问题描述】:我有以下Cython代码:#cython:profile=TrueimportcProfilefromcythonimportparallelfromlibc.stdiocimportFILE,fopen,fclose,fwrite,getline,printffromlibc.stringcim 查看详情

Yii:仅为管理员用户启用分析

...用户启用数据库分析?如果我在config中静态定义它,应用程序还不知道用户是否是管理员。【问题讨论】:【参考方案1】:作为建议,您可以在控制器中执行以下操作:publicfunctioninit()$role=Rbac::role(Yii::ap 查看详情

cython和python的区别

...过对代码立刻进行更改来加快速度,而不是从头开始重写整个应用程序。这种方法通常与软件性能问题的性质相吻合。在大多数程序中,绝大多数CPU密集型代码都集中在一些热点上,也就是帕累托原则的一个版本,也被称为80/20... 查看详情

分析 Cython 代码时,啥是`stringsource`?

】分析Cython代码时,啥是`stringsource`?【英文标题】:WhenprofilingCythonCode,whatis`stringsource`?分析Cython代码时,什么是`stringsource`?【发布时间】:2014-01-1100:00:20【问题描述】:我正在尝试优化一个繁重的Cython函数。我正在按照以下... 查看详情

cython与python的不同都有哪些

...过对代码立刻进行更改来加快速度,而不是从头开始重写整个应用程序。这种方法通常与软件性能问题的性质相吻合。在大多数程序中,绝大多数CPU密集型代码都集中在一些热点上,也就是帕累托原则的一个版本, 查看详情

在 jupyter 笔记本中使用 cython 进行行分析

】在jupyter笔记本中使用cython进行行分析【英文标题】:Lineprofilingwithcythoninjupyternotebook【发布时间】:2019-08-2112:46:33【问题描述】:我正在尝试在jupyternotebook中使用带有cython函数的liner_profiler库。它只工作了一半。我得到的结果... 查看详情

Cython:从 C 程序调用 Python 代码

】Cython:从C程序调用Python代码【英文标题】:Cython:CallingPythoncodefromCprogram【发布时间】:2014-01-0701:13:58【问题描述】:我正在尝试制作Cython包装器,以便我可以从C调用Python代码。我遇到了导入问题,因为我希望包装器与原始代... 查看详情

cython相关

...个模块,使用特定的语法可以把通过cython把写好的类python程序转化为c语言,再转化为so库,提供给python调用实现加速目的cPython是python解释器的C实现,类似的还有java写成的jython和python实现的pypy中文文档https://www. 查看详情

如何在 Cython 中将大型 malloc 数组返回或保存为 Python 对象?

】如何在Cython中将大型malloc数组返回或保存为Python对象?【英文标题】:Howtoreturnorsavelargemalloc\'darraysinCythonasPythonobjects?【发布时间】:2021-12-1105:28:49【问题描述】:我想使用Cython从模型中创建大量模拟样本,稍后我需要使用Pytho... 查看详情

在 cython 中将 C++ 对象转换为 python 对象?

...布时间】:2017-06-1000:40:45【问题描述】:我的第一个cython程序遇到了困难,所以如果我有一个愚蠢的问题,请不要气馁。这是我的例子:c_foo.h://c_foo.hclassfoo:public:....std::unique_ptr<2DVector&g 查看详情

为啥启用分析后我的程序运行得更快?

】为啥启用分析后我的程序运行得更快?【英文标题】:WhydoesmyprogramrunwayfasterwhenIenableprofiling?为什么启用分析后我的程序运行得更快?【发布时间】:2009-12-2622:57:07【问题描述】:我有一个运行速度很慢的程序(即使在发布时... 查看详情

Cython 似乎通过减少时间分析器而不是核心代码的开销来提供加速?

】Cython似乎通过减少时间分析器而不是核心代码的开销来提供加速?【英文标题】:Cythonseemstoprovidespeed-upbyreducingtheoverheadintimeprofilerratherthanthecorecode?【发布时间】:2018-03-1423:57:32【问题描述】:我试图学习和使用cython来加速我... 查看详情

始终启用“使用严格”;默认?

...是否可以将节点配置为始终在本地对某些文件夹/文件或整个项目使用严格模式?【问题讨论】:每个js文件都以\ 查看详情

无法为 Firebase 中的 bigquery 链接启用谷歌分析

】无法为Firebase中的bigquery链接启用谷歌分析【英文标题】:Unabletoenablegoogleanalyticsforbigquerylinkinginfirebase【发布时间】:2021-08-2407:23:44【问题描述】:我有一个启用了Firebase分析的Android应用。我能够在firebase控制台中看到事件。现... 查看详情

Cython 优化 numpy 数组求和的关键部分

】Cython优化numpy数组求和的关键部分【英文标题】:Cythonoptimizethecriticalpartofanumpyarraysummation【发布时间】:2014-02-0622:57:13【问题描述】:令L是一个列表L=[A_1,A_2,...,A_n],每个A_i都是长度为1024的numpy.int32数组。(大多数时候1000经过... 查看详情