我有一个文件foo.py,它包含一个非常慢的函数,需要8分钟来计算。但是,当我将文件更改为foo.pyx
并使用cython进行编译而没有其他更改时,计算需要5分钟。
我的问题是:如果我运行cython foo.py
而不是cython foo.pyx
然后运行
gcc -shared -pthread -fPIC -fwrapv -O2 -Wall -fno-strict-aliasing -I/usr/include/python2.7 -o foo.so foo.c
当我运行import foo
时,python会导入.py
文件还是已编译的.so
文件?
pyx真的需要在那里,并且有没有办法强制它.so
超过.py
如果存在?
这样做的原因是我不能在不破坏其他人的机器上的代码的情况下更改foo.py的名称,但我真的希望它对我的测试用例更快。如果我可以在本地编译它而不用担心在其他地方破坏代码会很棒。
(我正在测试这个,但它需要一段时间)
答案 0 :(得分:4)
我刚刚在Windows上尝试了一些我最近一直在使用的Cython代码。编译后的模块优先。 在以下两个问题中也证实了这一点: