【问题标题】:Running python code through Cython with command line arguments使用命令行参数通过 Cython 运行 python 代码
【发布时间】:2017-12-10 11:14:36
【问题描述】:

我有一个使用两个命令行参数的 Python 代码。我正在使用 linux 终端执行所有命令行任务。现在我正在尝试使用 Cython 来加速我的 Python 代码。 为此,我通过创建此 setup.py 文件,使用 build_ext 模块将 Python 代码编译为 C:

setup.py

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
setup (
cmdclass = {'build_ext': build_ext } ,
ext_modules = [
Extension ("myCode", ["myCode.py"]) ,
])

然后将我的 Python 代码编译成 C 使用:

python setup.py build_ext -i

生成了以下内容:

[file]myCode.c
[file]myCode.so
[folder]build
--[folder]temp.linux-x86_64-2.7
----[file]myCode.o

我想使用命令行参数运行生成的文件。 到目前为止,在 Python 中我使用的是常用命令

>> python myCode.py arg1 arg2

我对 Cython 很陌生,事实上我在代码级算法优化后开始使用它来解决 Python 固有的速度问题。我需要输入要运行的文件,以及如何运行转换后的 C 代码和命令行参数。提前致谢。

【问题讨论】:

  • Cython 编译后myCode.so 成为一个模块。你不能运行它,你必须导入它:python -c 'import myCode'.
  • @phd 我应该把这条线准确地放在哪里,放在哪个文件中?一旦我正确放置它,我就会明白它的用途。
  • 这只是一个例子。 myCode 是一个模块,您必须将其作为任何其他模块导入。它只是不是 .py 模块,而是编译的 .so。
  • 我明白这一点。但是我必须在我的原始 Python 代码 (myCode.py) 中导入它吗?如果是,我必须做什么才能使用这个导入的模块?还有一点,myCode.c 有没有手动使用?
  • 哦,我知道你的问题出在哪里了:应该使用 Cython 来编译 modules,而不是 programsmyCode.py 必须是从程序中导入的 moule,并且当您编译它时,您的程序会导入 .so 而不是 .py。

标签: python c command-line-arguments cython


【解决方案1】:

如前所述,您编译了一个 Python 模块。因此,要从 Linux 调用,您必须编写一个 .py 脚本来导入您编译的模块并进行所需的任何计算。然后,您可以使用典型的 Linux 命令运行它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多