cython相关内容

为什么cython嵌入式插件在cpython解释器中具有比rust-c接口版本更高的性能?

我想问一些有关python解释器基本原理的问题,因为在我自己的搜索过程中没有得到很多有用的信息. 我最近一直在使用rust编写python插件,这大大提高了python的cpu密集型任务的速度,并且与c相比,编写速度也更快.但是,它的一个缺点是,与使用cython加速的旧方案相比,rust(我正在使用pyo3)的调用开销似乎比c(我正在使用cython)的调用开销大​​, 例如,我们在 ..
发布时间:2021-04-28 18:36:27 Python

仅处理一个参数的烧瓶网址

我的 sample.pyx 文件包含 @ app.route('//')def索引(lang_code):返回“语言:"+ lang_code 但是当我导航到 http://127.0.0.1:5000/zh/ 我收到500错误: 文件"c:\ code \ flask \ venv363 \ lib \ site-packages \ flask \ ap ..
发布时间:2021-04-28 18:36:24 Python

整理gcc使用的Cython构建标记

我目前使用'setuptools'在Linux上使用gcc自动cythonize和编译我的Cython模块.从现在开始,我需要对提供给gcc的构建标志进行更多控制.如果我在 setup.py 中使用以下内容: cythonize([Extension("*",["project/*.pyx"])nthreads = 4) 我得到的构建标志如下: gcc -pthread -Wno-un ..
发布时间:2021-04-28 18:36:21 Python

在cython中使用typedef的结构

我在头文件dcm.h中具有以下定义: typedef结构{双字母双伽玛双头} ThetaDCM; 我想在cython中导入它,所以我有: 来自"dcm.h"的 cdef extern:ctypedef结构ThetaDCM:np.float64_t alphanp.float64_t伽玛np.float64_t tau 现在,我想为ThetaDCM的数组分配内存.我有以下内容: ..
发布时间:2021-04-28 18:36:18 Python

在OSX上编译带有OpenMP支持的cython

我正在使用OSX v10.11.6,并且安装了最新版本的xcode.所以我的默认编译器是 gcc ,它实际上是 clang .我已经使用自制软件安装了gcc5,以便可以使用openMP,并且通过在我的Makefile中为我的C源代码设置 CC:= g ++-5 ,我可以成功地使用非-fopenmp的简单用法. 我想做的是让Cython与gcc5一起编译,以便我可以使用Cython的本机pra ..
发布时间:2021-04-28 18:36:14 C/C++开发

Cython包装使用另一个库的类

我有一些C ++代码 dbscan.cpp 和 dbscan.h 可以很好地独立运行.现在,我尝试将其包装在Cython中.我不确定如何正确执行此操作,并且我对编译器,链接器以及库和makefile的了解有限. 这是 PyDBSCAN_lib.pyx : #distutils:语言= c ++#distutils:来源= dbscan.cpp来自libcpp.vector cimport ..
发布时间:2021-04-28 18:36:10 C/C++开发

使用cython从C调用python导入python文件

此问题基于这一个,但带有一个捻.我想使用cython编译一个python函数,然后在C中调用它.在这种简单的情况下,它可以工作,但是当我尝试从我的python代码中导入另一个python模块时,它不起作用. world.pyx def world():返回10 hello.pyx 导入世界def hello():ret = 5 + world()返回retcdef public i ..
发布时间:2021-04-28 18:36:07 Python

Joblib Parallel + Cython永久悬挂

在使用Cython创建一个使用 joblib.Parallel 的Cython扩展时,我遇到了一个非常奇怪的问题. 以下代码按预期工作: 从joblib导入 并行,延迟从数学导入sqrt打印(并行(n_jobs = 4)(x范围(4)中的延迟(sqrt)(x))) 以下代码永远挂起: 从joblib导入 并行,延迟def mult(x):返回x * 3打印(并行(n_jobs = ..
发布时间:2021-04-28 18:36:03 Python

Python C模块扩展版本不兼容吗?

我在Python 3.6中编译了python c模块扩展.它在Python 3.6环境中运作良好,但在Python 3.7和3.8环境中则无法运作,并且出现错误无法导入名称'cygrpc'. 我想知道这是预期的行为吗?如果是,原因是什么. 解决方案 这取决于扩展的编译方式以及使用的Python C API接口.但是可以, C扩展通常必须针对特定版本的Python进行编译.在不知道如何 ..
发布时间:2021-04-28 18:36:00 Python

在另一个python版本中导入cython生成的* .so-module

应如何在python中导入文件 myModule.cpython-35m-x86_64-linux-gnu.so ?有可能吗? 我尝试了常规方法: import myModule 口译员说: `ModuleNotFoundError:没有名为"myModule"的模块 这是我无法在正在使用的集群中安装的软件,因此我仅提取了 .deb 程序包,并且没有要安装的wheel文件或结构 ..
发布时间:2021-04-28 18:35:54 Python

Cython NameError:未定义名称"blah".Jupyter中的Cython魔术无法正常工作?

我正在尝试使用cython在Jupyter中更快地运行某些代码,但是由于某些原因,在%% cython单元运行后,它无法“记住"函数.我在网上找到的任何其他示例似乎都不是问题(例如: 我尝试了 cpdef 和 cdef ,但是它们提供了相同的错误输出. 另一个例子: %% cythoncpdef int a = 0对于我在范围(10)中:一个+ =我打印(a) 什么都没打印 ..
发布时间:2021-04-28 18:35:48 Python

Cython“无法将默认值分配给cdef类,结构或联合中的字段"

我正在尝试将Python代码移植到Cython.我对C的经验非常有限.我正在尝试制作一个相对简单的类,用于存储多维数组.出于这个问题的目的,让我们将其留给属性时间为长度为1的单个一维数组.目前,我收到此错误: cdef np.ndarray [np.int64_t,ndim = 1]时间= np.empty([1],dtype = np.int64)^--------------------- ..
发布时间:2021-04-28 18:35:44 Python

Cython中固定大小的字节串序列

我是Cython的新手,对C的经验很少,所以请多多包涵. 我想存储固定大小的不可变字节对象序列.该对象看起来像: obj =(b'abc',b'1234',b'^& $#%') 元组中的元素是不可变的,但是它们的长度是任意的. 我尝试过的方式类似于: cdef char [3] * objcdef字符* a,b,ca = b'abc'b = b'1234'c = b'^& ..
发布时间:2021-04-28 18:35:41 其他开发

使向量化numpy函数的行为类似于ufunc

让我们假设我们有一个Python函数,该函数接受Numpy数组并返回另一个数组: 将numpy导入为npdef f(x,y,method ='p'):“"“参数:x(np.ndarray),y(np.ndarray),方法(str)返回:np.ndarray“"“z = x.copy()如果方法=='p':遮罩= x0z [掩码] = 0返回z * y 尽管实际实现并不 ..
发布时间:2021-04-28 18:35:38 Python

在分析Cython代码时,`stringsource`是什么?

我正在尝试优化一个沉重的Cython函数.我正在按照以下教程进行配置 http://docs.cython.org/src/tutorial/profiling_tutorial.html .我的个人资料输出如下: ncalls tottime percall cumtime percall filename:lineno(function)1 7.521 7.521 18.945 18.94 ..
发布时间:2021-04-28 18:35:32 Python

我需要在Cython中使用`nogil`吗?

我有一些想尽快运行的Cython代码.为此,我需要释放GIL吗? 假设我的代码与此类似: 将numpy导入为np#琐碎的定义仅供参考!cdef double some_complicated_function(double x)nogil:返回xcdef void func(double [:] input)nogil:cdef double [:] array = np.zeros_li ..
发布时间:2021-04-28 18:35:29 Python

删除Cython中的编译args

我想用cython编译我的python项目.我创建了这个setup.py文件: 从setuptools导入安装程序中的 ,find_packages从Cython.Build导入cythonizerecursive_tree = [用于glob.iglob("sample/**/*.py",recursive = True)中文件的文件]设置(名称=“样本",版本=样本.__版本__,包= f ..
发布时间:2021-04-28 18:35:25 其他开发

如何在IDE中调试Cython

我正在尝试调试包装c ++类的Cython代码,而我正在寻找的错误在C ++代码中. 如果我能以某种方式调试它好像是用一种语言编写的,那将非常方便,即,如果C ++部分中有错误,它将向我显示源代码行,并且该错误是在Python中部分它将执行相同的操作. 现在,我始终必须尝试使用​​C ++中的类来复制Python代码,现在我遇到一个错误,该错误仅在通过Python运行时才会发生...希 ..
发布时间:2021-04-28 18:35:23 C/C++开发

NumPy:如何保留具有重复项的连接数组

要使用Cython,我需要将 df1.merge(df2,how ='left')(使用 Pandas )转换为普通的 NumPy ,虽然我发现 numpy.lib.recfunctions.join_by(key,r1,r2,jointype ='leftouter')不支持 key 上的任何重复项.有什么办法解决吗? 解决方案 在纯左 numpy 联接处有一个刺,可以处理重复的键: ..
发布时间:2021-04-28 18:35:20 Python