Python中调用C++程序

来源:互联网 发布:软件开发思路 编辑:程序博客网 时间:2024/05/22 15:27

由于Python是顶层高级语言,而C/C++属于底层语言。因此在运行的速度上Python是比不上C/C++。在此我分别用C++和Python写了两个相同的函数,然后分别来运行。
首先用C++写下如下内容,文件保存为pycall.cpp

#include <iostream>using namespace std;extern "C" {     void dosomething(int n){        for(int i = 0; i < n; i++) i *= 2;    }}

在函数里面做一个for循环操作,循环的次数由参数n决定。
接着用gcc编译:

gcc -o libpycall.so -shared -fPIC pycall.cpp

会生成一个libpycall.so文件。
接着在Python中调用C++,代码如下,文件命名为pythonCallC.py:

import ctypesimport timestart = time.time()ll = ctypes.cdll.LoadLibrary   lib = ll("./libpycall.so") lib.dosomething(100000) print("**call by c++**") print(time.time() - start)

其中,导入time库来计时,里面主要做的事情就是循环10万次。
同样在另外一个Python文件中写下如下代码,文件命名为pythonSelf.py:

import timedef dosomething(n):    for i in range(n):        i *= 2start = time.time()dosomething(100000)print("**call by python**")print(time.time() - start)

最后在terminal中运行这两个Python文件,结果如下:

这里写图片描述

可以看出,在Python中调用C++的执行速度要快于Python中直接执行的速度。特别是要实现的功能越复杂,差距越大。如果执行很简单的操作的话,就不好体现出C++的执行速度的优势。比如,可以看出,当只循环1000次的时候,Python还是比C++快很多的。

这里写图片描述

1 0
原创粉丝点击