Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Python项目转换为C_Python_C_Inheritance_Cython_Cythonize - Fatal编程技术网

将Python项目转换为C

将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

我是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
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扩展非常简单(请参阅)。