【发布时间】:2018-07-11 11:26:42
【问题描述】:
我是 python 新手,但有 C 方面的经验。
我有一个 python 3 项目,包括一个 main.py 文件和其他一些 .py 文件,位于另一个文件夹中,如下所示:
Root
├── main.py
├── subfolder1
│ ├── __init__.py
│ ├── models.py
│ └── subfolder2
│ ├── __init__.py
│ └── models.py
在 main.py 内:
from subfolder1.model import BaseClass
第一个__init__.py:
from .model import BaseClass
第二个__init__.py:
from .model import BaseClass
我想将此项目转换为 C 项目以提高其性能,在此项目中使用了很多库,如 numpy、sklearn、keras 和 scipy。
我试过cython,我知道如何从main.py 获取main.c,但是对于其他文件以及如何转换和使用子类方法,有没有办法用一个@987654335 转换整个项目@?(我从它的文档中不太了解)
主要目的是在 C 中运行并获得更好的性能,所以如果有其他方法,请提供帮助。
谢谢。
=================================编辑=========== =========================
我想在models.py 中使用BaseClass 方法和C Project 中main.py 中的函数,问题是如何在子文件夹中使用其他.py 文件并使用@987654342 生成C 代码@。我能够转换单个 python 文件main.py,但不知道如何在我的C Project 中添加、导入或...其他文件。
再次感谢。
【问题讨论】:
-
除非瓶颈在你的代码中,否则你真的无能为力。您使用的 Python 库经过高度优化,其关键部分已经用 C 或 C++ 编码。要找到你需要profile你的代码的瓶颈。即使您的代码是瓶颈,您也可以优化最差的部分,或者仅将部分代码转换为 C,而不是重写整个项目。
-
Apache Spark 你可能也会感兴趣。它还具有 ML 功能并且可以很好地处理并行化(是的,它也适用于 Python)。我绝对同意其他人的观点,尽管您应该分析您的代码。您的逻辑可能是某个地方的瓶颈,尽管 Spark 还可以在该修复的基础上为您提供额外的性能。
标签: python c inheritance cython cythonize