Python中调用C++程序

由于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 ctypes
import time

start = 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 time

def dosomething(n):
    for i in range(n):
        i *= 2

start = time.time()
dosomething(100000)
print("**call by python**")
print(time.time() - start)

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

这里写图片描述

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

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qxconverse/article/details/69789025