将Python项目转换为C
我是python新手,但有C语言方面的经验 我有一个python 3项目,包括一个将Python项目转换为C,python,c,inheritance,cython,cythonize,Python,C,Inheritance,Cython,Cythonize,我是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
main.py
文件和另一个文件夹中的一些其他.py
文件,如下所示:
Root
├── main.py
├── subfolder1
│ ├── __init__.py
│ ├── models.py
│ └── subfolder2
│ ├── __init__.py
│ └── models.py
内部main.py:
from subfolder1.model import BaseClass
from .model import BaseClass
from .model import BaseClass
内部第一个\uuuu初始化\uuuuu.py:
from subfolder1.model import BaseClass
from .model import BaseClass
from .model import BaseClass
内秒\uuuu init\uuuu.py:
from subfolder1.model import BaseClass
from .model import BaseClass
from .model import BaseClass
我想将此项目转换为C项目以提高其性能,在该项目中使用了许多库,如numpy
、sklearn
、keras
和scipy
我尝试了cython
,我知道如何从main.py
获取main.c
,但是对于其他文件以及如何转换和使用子类方法,是否有一种方法可以用一个setup.py
转换整个项目?(我从它的文档中不太了解)
主要目的是在C中运行并获得更好的性能,因此如果有其他方法,请提供帮助
谢谢
============================================================================================================================
我想在models.py
中使用BaseClass
方法,在C项目中使用main.py
函数,问题是如何使用子文件夹中的其他.py
文件,并使用cython
生成C
代码。我能够转换单个python文件main.py
,但不知道如何添加、导入或。。。我的C项目中的其他文件
再次感谢。我相信答案是否定的——在整个项目中,您无法简单地转换为C。至少,这不会给你带来更好的表现。此外,您列出的库大部分已经用C实现,因此对这些库的调用通常很快
你分析过代码了吗?我想如果你能找出瓶颈所在,而不是试图进行完全转换,你会更幸运。我相信答案是否定的——你不可能在整个项目中简单地转换成C。至少,这不会给你带来更好的表现。此外,您列出的库大部分已经用C实现,因此对这些库的调用通常很快
你分析过代码了吗?我认为,如果你能找出瓶颈所在,而不是试图进行全面转换,你会更幸运。除非代码中存在瓶颈,否则你真的做不了多少。使用的Python库是高度优化的,对于关键部分,它们已经用C或C++编码了。要找到瓶颈,需要分析代码。即使您的代码是瓶颈,您也可以优化最糟糕的部分,或者只将部分代码转换为C,而不是重写整个项目。你可能也感兴趣。它还具有ML功能,并且非常好地处理并行化(是的,它也适用于Python)。我绝对同意其他人的观点,尽管你应该分析你的代码。您的逻辑可能是某个地方的瓶颈,尽管Spark也可以在修复的基础上为您提供额外的性能。除非瓶颈在您的代码中,否则您实际上做不了多少。使用的Python库是高度优化的,对于关键部分,它们已经用C或C++编码了。要找到瓶颈,需要分析代码。即使您的代码是瓶颈,您也可以优化最糟糕的部分,或者只将部分代码转换为C,而不是重写整个项目。你可能也感兴趣。它还具有ML功能,并且非常好地处理并行化(是的,它也适用于Python)。我绝对同意其他人的观点,尽管你应该分析你的代码。您的逻辑可能是某个地方的瓶颈,尽管Spark也可以在修复的基础上为您提供额外的性能。您好,谢谢您的建议,您的意思是我可以将代码中一些耗时的函数移到C并重新实现它们,然后从python调用它们,这将为我提供更好的性能?这是一条合理的途径。如果您熟悉C语言,那么编写python扩展非常简单(请参阅)。您好,谢谢您的建议,您的意思是我可以将代码中一些耗时的函数移到C语言中并重新实现它们,然后从python调用它们,这将给我带来更好的性能?这是一条合理的途径。如果您熟悉C语言,那么编写python扩展非常简单(请参阅)。