哪些模块可用于python性能分析_Python调用C模块以及性能分析
一.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模块以及性能分析相关推荐
- python 主线程_Python threading多线程模块
Python是支持使用多线程的,程序代码可以在一个进程空间中操作管理多个执行的线程,python模块下载时要记得,这个库叫做 threading. 一.threading模块简介 在Python多线程 ...
- 哪些模块可用于python性能分析_提升Python程序性能的方法有哪些?看完你就知道啦!...
掌握一些技巧,可尽量提高Python程序性能,也可以避免不必要的资源浪费.今天就为大家带来七个可以提升python程序性能的好习惯,赶快来学习吧:. 1.使用局部变量 尽量使用局部变量代替全局变量:便 ...
- python赋值语句格式_Python赋值语句后逗号的作用分析
Python赋值语句后逗号的作用分析 本文实例讲述了Python赋值语句后逗号的作用.分享给大家供大家参考.具体分析如下: IDLE 2.6.2 >>> a = 1 >> ...
- python——pickle模块(用于Python对象的持久化存储)
pickle模块介绍 pickle是一种用于存储的持久化技术 首先从英文来理解一下这个模块:pickle 是腌渍的意思,也就是把东西腌起来保存成文件,要用的时候读出来洗洗还能用. 专业点的说法是:pi ...
- python打印字节流_Python 调用系统命令的模块 Subprocess
有些时候需要调用系统内部的一些命令,或者给某个应用命令传不定参数时可以使用该模块. 初识 Subprocess 模块 Subprocess 模块提供了多个方法来运行额外的进程.在 Python2.7 ...
- python psycopg2使用_Python中用psycopg2模块操作PostgreSQL方法
其实在Python中可以用来连接PostgreSQL的模块很多,这里比较推荐psycopg2.psycopg2安装起来非常的简单(pip install psycopg2),这里主要重点介绍下如何使用 ...
- c调用python第三方库_Python使用ctypes模块调用DLL函数之C语言数组与numpy数组传递...
在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...
- python导入json模块_Python调用json模块代码实例
本篇文章小编给大家分享一下Python调用json模块代码实例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Json是JavaScript Object Notation ...
- windows下如何用python控制打印机打印_Python使用win32print模块设置打印机
Python通过调用win32print模块,可以实现对已安装的打印机进行一系列管理.首先,你需要安装好Python 2.4 - 3.x和PyWin32包. 然后就可以查看当前电脑上安装了哪些打印机: ...
最新文章
- Metasploit攻击Oracle的环境搭建
- 烦人,周报要不要取消?| 每日趣闻
- jquery PHP大文件上传,Jquery和BigFileUpload实现大文件上传及进度条显示
- AFNetworking 下载文件断点续传操作
- OSChina 娱乐弹弹弹——Team,对你爱爱爱不完
- Sublime text无法自动通过package control安装插件的研究
- php 漂亮的分页类
- 捕捉Web页面子类错误堆栈中的信息
- poj1833 排列
- 分享一组我在ins上收集的程序员最爱桌面壁纸
- 菜鸟教程nginx视频_Nginx教程(一) Nginx入门教程
- 标准误计算机excel公式,如何用excel或wps计算标准差、方差、标准误差?
- wooyun镜像容器逆向分析
- WIN10设置护眼 豆沙绿
- 微软edge浏览器安装包下载地址-Microsoft edge download
- 属于python保留字的是_属牛的女人全集:属牛女的性格、命运、属相婚配表等-第一星座网...
- 【附源码】计算机毕业设计SSM民宿客房管理系统
- Java之HTTP网络编程(下篇:网页浏览器程序设计)
- 数据挖掘十大经典算法--CART: 分类与回归树
- 速写初习(二)---线条2