python能编译c语言吗,c++编译成python
这篇文章主要介绍了如何将计算机编程语言编译成C语言,我们都知道大蟒比c慢,下面小编就来个大家分享如何将计算机编程语言编译成C语言,需要的小伙伴可以参考一下
前言:
文章里用的计算机编程语言环境是蟒蛇3 2019.7
这里测试的程序是找出所有1000以内的勾股数。
a[1,1000],b[1,1000],c[1,1000]
足a b=c有多少种解?
如果用普通的python去写,代码如下:
创建一个main.py
#编码=utf-8
# cython: language_level=3
导入时间
导入皮克西波特
pyximport.install()
导入pyth _ triples
定义主():
start=time.time()
result=python _ triples。count _ triples(1000)
duration=time.time() -开始
打印(结果,持续时间* 1000,毫秒)
if __name__==__main__:
主()
创建pyth_triples.py
#编码=utf-8
# cython: language_level=3
def count_triples(限制):
结果=0
对于范围(1,限值1):内的
对于范围内的b(a1,限值1):
对于范围(b 1,限值1):内的c
如果c ** 2 a ** 2 b ** 2:
破裂
如果c ** 2==(a ** 2 b ** 2):
结果=1
回送结果
这时候还没有编译成C去运行,只是从圣体容器文件导入函数去使用。
执行结束以后,结果为881,耗时为57603毫秒,太慢了。
现在开始,我们编译成C语言去运行,看一下效果。
修改pyth _ triples.pyx文件,定义的变量都改为cdef int xxx=0
#编码=utf-8
# cython: language_level=3
def count_triples(限制):
cdef int结果=0
cdef int a=0
cdef int b=0
cdef int c=0
对于范围(1,限值1):内的
对于范围内的b(a1,限值1):
对于范围(b 1,限值1):内的c
如果c ** 2 a ** 2 b ** 2:
破裂
如果c ** 2==(a ** 2 b ** 2):
结果=1
回送结果
创建setup.py (这一步其实可以不做,因为这只是把编译结果写入本地磁盘,给我们展示生成的C语言代码长什么样)
#编码=utf-8
# cython: language_level=3
从distutils.core导入设置
来自Cython .建立进口渠道
# set python home=d : \ anaconda 3
#康达激活
# python设置。py build _ ext-在位
设置(
ext _ modules=cytonize( python _ triples。pyx’)
)
依次在pycharm的终端执行以下命令:
set PYTHONHOME=D:\Anaconda3
康达激活
python设置。py build _ ext-在位
这将生成c文件和一些不知道什么文件
执行main.py以后,结果不变,实行时间由原来的57603毫秒减少到35毫秒左右,相差1600多倍。
如果用爪哇去跑这套代码
Java代码:
公共类三元组测试{
公共静态void main(String[] args) {
长启动时间=系统。当前时间毫秒();
系统。出去。println(count _ triples(1000));
结束时间长=系统。当前时间毫秒();
System.out.println(运行时间: (结束时间-开始时间)毫秒;
}
public static int count _ triples(int limit){
int result=0;
for(int a=1;a=极限;a ) {
for(int b=a 1;b=极限;b ) {
for(int c=b 1;c=极限;c ) {
if (Math.pow(c,2) Math.pow(a,2) Math.pow(b,2)) {
打破;
}
if (Math.pow(c,2)==Math.pow(a,2) Math.pow(b,2)) {
结果=1;
}
}
}
}
返回结果;
}
}
执行时间是130毫秒左右。
到此这篇关于如何将计算机编程语言编译成C语言的文章就介绍到这了,更多相关将计算机编程语言编译成C语言内容请搜索盛行信息技术软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行信息技术软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。