一.c,ctypes和python的数据类型的对应关系

ctypes type ctype Python type

c_char char 1-character string

c_wchar wchar_t 1-character unicode string

c_byte char int/long

c_ubyte unsigned char int/long

c_short short int/long

c_ushort unsigned short int/long

c_int int int/long

c_uint unsigned int int/long

c_long long int/long

c_ulong unsigned long int/long

c_longlong __int64 or long long int/long

c_ulonglong unsigned __int64 or unsigned long long int/long

c_float float float

c_double double float

c_char_p char * (NUL terminated) string or None

c_wchar_p wchar_t * (NUL terminated) unicode or None

c_void_p void * int/long or None

2.操作int

>>> from ctypes import *

>>> c=c_int(34)

>>> c

c_int(34)

>>> c.value

34

>>> c.value=343

>>> c.value

343

3.操作字符串

>>> p=create_string_buffer(10)

>>> p.raw

'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

>>> p.value='fefefe'

>>> p.raw

'fefefe\x00\x00\x00\x00'

>>> p.value='fefeeeeeeeeeeeeeeeeeeeeeee'  #字符串太长,报错

Traceback (most recent call last):

File "", line 1, in

ValueError: string too long

4.操作指针

>>> i=c_int(999)

>>> pi=pointer(i)

>>> pi

>>> pi.value

Traceback (most recent call last):

File "", line 1, in

AttributeError: 'LP_c_int' object has no attribute 'value'

>>> pi.contents

c_int(999)

>>> pi.contents=c_long(34343)

>>> pi.contents

c_int(34343)

通过pointer获取一个值的指针

通过contents获取一个指针的值

5.c的结构体

#定义一个c的structure,包含两个成员变量x和y

>>> class POINT(Structure):

...     _fields_=[('x',c_int),('y',c_int)]

...

>>> point=POINT(2,4)

>>> point

>>> point.x,point.y

(2, 4)

>>> porint=POINT(y=2)

>>> porint

>>> point=POINT(y=2)

>>> point.x,point.y

(0, 2)

定义一个类型为POINT的数组

>>> POINT_ARRAY=POINT*3

>>> pa=POINT_ARRAY(POINT(2,3),POINT(2,4),POINT(2,5))

>>> for i in pa:print pa.y

...

Traceback (most recent call last):

File "", line 1, in

AttributeError: 'POINT_Array_3' object has no attribute 'y'

>>> for i in pa:print i.y

...

3

4

5

6.访问so文件

1).创建一个c文件

#include

int hello_world(){

printf("Hello World\n");

return 0;

}

int main(){

hello_world();

return 0;

}

2).编译成动态链接库

gcc hello_world.c  -fPIC -shared -o hello_world.so

哪些模块可用于python性能分析_Python调用C模块以及性能分析相关推荐

  1. python 主线程_Python threading多线程模块

    Python是支持使用多线程的,程序代码可以在一个进程空间中操作管理多个执行的线程,python模块下载时要记得,这个库叫做 threading. 一.threading模块简介 在Python多线程 ...

  2. 哪些模块可用于python性能分析_提升Python程序性能的方法有哪些?看完你就知道啦!...

    掌握一些技巧,可尽量提高Python程序性能,也可以避免不必要的资源浪费.今天就为大家带来七个可以提升python程序性能的好习惯,赶快来学习吧:. 1.使用局部变量 尽量使用局部变量代替全局变量:便 ...

  3. python赋值语句格式_Python赋值语句后逗号的作用分析

    Python赋值语句后逗号的作用分析 本文实例讲述了Python赋值语句后逗号的作用.分享给大家供大家参考.具体分析如下: IDLE 2.6.2 >>> a = 1 >> ...

  4. python——pickle模块(用于Python对象的持久化存储)

    pickle模块介绍 pickle是一种用于存储的持久化技术 首先从英文来理解一下这个模块:pickle 是腌渍的意思,也就是把东西腌起来保存成文件,要用的时候读出来洗洗还能用. 专业点的说法是:pi ...

  5. python打印字节流_Python 调用系统命令的模块 Subprocess

    有些时候需要调用系统内部的一些命令,或者给某个应用命令传不定参数时可以使用该模块. 初识 Subprocess 模块 Subprocess 模块提供了多个方法来运行额外的进程.在 Python2.7 ...

  6. python psycopg2使用_Python中用psycopg2模块操作PostgreSQL方法

    其实在Python中可以用来连接PostgreSQL的模块很多,这里比较推荐psycopg2.psycopg2安装起来非常的简单(pip install psycopg2),这里主要重点介绍下如何使用 ...

  7. c调用python第三方库_Python使用ctypes模块调用DLL函数之C语言数组与numpy数组传递...

    在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...

  8. python导入json模块_Python调用json模块代码实例

    本篇文章小编给大家分享一下Python调用json模块代码实例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Json是JavaScript Object Notation ...

  9. windows下如何用python控制打印机打印_Python使用win32print模块设置打印机

    Python通过调用win32print模块,可以实现对已安装的打印机进行一系列管理.首先,你需要安装好Python 2.4 - 3.x和PyWin32包. 然后就可以查看当前电脑上安装了哪些打印机: ...

最新文章

  1. Metasploit攻击Oracle的环境搭建
  2. 烦人,周报要不要取消?| 每日趣闻
  3. jquery PHP大文件上传,Jquery和BigFileUpload实现大文件上传及进度条显示
  4. AFNetworking 下载文件断点续传操作
  5. OSChina 娱乐弹弹弹——Team,对你爱爱爱不完
  6. Sublime text无法自动通过package control安装插件的研究
  7. php 漂亮的分页类
  8. 捕捉Web页面子类错误堆栈中的信息
  9. poj1833 排列
  10. 分享一组我在ins上收集的程序员最爱桌面壁纸
  11. 菜鸟教程nginx视频_Nginx教程(一) Nginx入门教程
  12. 标准误计算机excel公式,如何用excel或wps计算标准差、方差、标准误差?
  13. wooyun镜像容器逆向分析
  14. WIN10设置护眼 豆沙绿
  15. 微软edge浏览器安装包下载地址-Microsoft edge download
  16. 属于python保留字的是_属牛的女人全集:属牛女的性格、命运、属相婚配表等-第一星座网...
  17. 【附源码】计算机毕业设计SSM民宿客房管理系统
  18. Java之HTTP网络编程(下篇:网页浏览器程序设计)
  19. 数据挖掘十大经典算法--CART: 分类与回归树
  20. 速写初习(二)---线条2

热门文章

  1. NLP——基于transformer 的翻译系统
  2. SpringBoot中常见的错误
  3. LVS的DR模式配置
  4. 打开某网站无法访问出现空白页可能的原因
  5. 基于Python的频谱分析(二)——频谱泄露
  6. 基于Python+Django实现药品管理系统
  7. 大数据笔记2019.5.6
  8. Python_note4 程序控制结构+random库的使用
  9. python求解方程组
  10. 《python数据分析实战》第七章手写