1、c的代码 dfunc.c 

#include<stdio.h>
int dgfunc(int n)
{
if(n < 2){
return 1;
}else{
return dgfunc(n-1)+dgfunc(n-2);
}
}

  

2、动态编译 cmd

  gcc dfunc.c -fPIC -shared -o libdfunc.so

  # 可执行文件编译
  # gcc hello.o –o hello.exe

3、python3.6调用动态编译文件 so

import time
from ctypes import *
dgf = CDLL('./libdfunc.so')
# print(dgf.dgfunc(5))
# 动态编译 so文件 c语言
# gcc dfunc.c -fPIC -shared -o libdfunc.so
# 可执行文件编译
# gcc hello.o –o hello.exe if __name__ == "__main__":
st = time.time()
for i in range(42):
print("第{}次爬{}步".format(i,dgf.dgfunc(i)))
print(time.time()-st)

  

4、经验总结

  对于cpython开发效率高,计算速度慢的解决问题,可以使用c或c++与python混合开发编程,也可以使用固定加速器numba 选中python的不同解释器,如pypy和jpython等。

5、友情提示

  对于gcc 编译器 的安装参考上一篇博文,需要安装对于的python3.6 64位 和gcc mingw 64位  如果你电脑是32就安装32 只要同意python和mingw的安装电脑 位数即可。

python3.6调用c语言动态编译文件 c语言编译可执行文件和动态编译等的更多相关文章

  1. 重写代码生成器支持模板(多层架构,MVC),多语言c#,java;支持mysql和sqlserver,动态编译

    多年前用过李天平前辈的,自己改过,后来李老师做动软了,不给源码,修改不是很方便.加上我目前需要转java方向,于是决定自己搞.到目前为止花了整整一个星期了,看看目前的成果. 最后是代码工程文件,用c# ...

  2. 修改OpenSSL默认编译出的动态库文件名称

    在 Windows 平台上调用动态链接库 dll 文件时,有两种方式:a) 隐式的加载时链接:使用 *.lib (导入库)文件,在 IDE 的链接器相关设置中加入导入库 lib 文件的名称,或在程序中 ...

  3. java调用dll或so动态库文件(c++/c)

    java调用dll或so动态库文件(c++/c) 博客分类:  工作 CC#C++JavaEclipse  java调用dll或so动态库文件(c++/c)开发平台:Eclipse3.3.1.1+CD ...

  4. Element + Vue I18n动态import加载国际化语言包翻译文件

    需求 项目为多页应用,包含产品a.b.c.d.e,每个产品都有自己的翻译文件.一次加载所有翻译文件是极度不合理的.于是考虑动态加载. 实现 参考官方文档:延迟加载翻译 项目结构 │ ├── dist ...

  5. 把模块有关联的放在一个文件夹中 在python2中调用文件夹名会直接失败 在python3中调用会成功,但是调用不能成功的解决方案

    把模块有关联的放在一个文件夹中 在python2中调用文件夹名会直接失败在python3中调用会成功,但是调用不能成功 解决办法是: 在该文件夹下加入空文件__init__.py python2会把该 ...

  6. Makefile 编译动态库文件及链接动态库

    本文为原创文章,转载请指明该文链接 文件目录结构如下 dynamiclibapp.c Makefile comm/inc/apue.h comm/errorhandle.c dynamiclib/Ma ...

  7. Python3.6 import源文件与编译文件的关系

    小结: 在Python3.6中 源文件存在时,import会比较源文件与__pycache__里相应文件的时间戳,来决定是否重新生成缓存编译文件 源文件不存在时,import会导入相应的.pyc文件 ...

  8. golang调用c++的dll库文件

    最近使用golang调用c++的dll库文件,简单了解了一下,特作此笔记:一.DLL 的编制与具体的编程语言及编译器无关 dll分com的dll和动态dll,Com组件dll:不管是何种语言写的都可以 ...

  9. c语言的头文件-不是c++类的头文件?

    下面的概述是参考的这篇文章:http://blog.csdn.net/bingxx11/article/details/7771437 c语言编程中也有,也需要头文件, 头文件不只是C++的类才需要! ...

随机推荐

  1. 天刀默认src截图保存文件夹位置在哪里?

    C:\Users\Public\Documents\WuXia 注意有的电脑显示的是public documents,实际进去就是documents

  2. Blade 模板

    在Laravel 5.3中,@foreach指令提供了更加强大的功能,在每一个@foreach循环体中都可以调用一个新的$loop变量.该变量是一个stdClass实例,包含了当前循环的元数据信息,让 ...

  3. Confluence 6.15 修改历史(Change-History)宏

    修改历史(Change-History)宏显示了页面一个的更新历史:版本号,作者,日期和备注.这些内容将会在同一栏中进行显示. 屏幕截图:Confluence 中的修改历史(Change-Histor ...

  4. Java的当中的泛型

    Java当中的泛型 01 import java.util.ArrayList; import java.util.List; public class Demo{ public static voi ...

  5. AtCoder AGC032E Modulo Pairing (二分、贪心与结论)

    题目链接 https://atcoder.jp/contests/agc032/tasks/agc032_e 题解 猜结论好题. 结论是: 按\(a_i\)从小到大排序之后,一定存在一种最优解,使得以 ...

  6. Java基础__随机生成1~15之间不重复的数字

    package text; import java.util.ArrayList; import java.util.List; public class Text { public static v ...

  7. Android_(控件)使用ListView显示Android系统中SD卡的文件列表

    使用ListView显示Android SD卡中的文件列表 父类布局activity_main.xml,子类布局line.xml(一个文件的单独存放) 运行截图: 程序结构: <?xml ver ...

  8. flask-数据库 进阶

    1. 级联操作 Cascade意为“级联操作”,就是在操作一个对象的同时,对相关的对象也执行某些操作.我们通过一个Post模型和Comment模型来演示级联操作,分别表示文章(帖子)和评论,两者为一对 ...

  9. scrapy pipeline

    pipeline的四个方法 @classmethod def from_crawler(cls, crawler): """ 初始化的时候,用以创建pipeline对象 ...

  10. Flutter文本框TextField

    参数详解TextField同时也使用Text 的部分属性: 属性 作用controller 控制器,如同 Android View iddecoration 输入器装饰keyboardType 输入的 ...