问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

毕设做一个软件,要求算法效率的,主要的计算部分想用C语言,界面用python,请问这样可以么?

发布网友 发布时间:2022-04-29 18:03

我来回答

3个回答

热心网友 时间:2023-10-27 22:46

python可以很简单的调用C语言中的函数,需要把C语言中的函数做成动态链接库。
界面用python不影响效率,毕竟不是游戏,一般界面不会太耗CPU。

Python开发效率高,运行效率低。而c/c++恰恰相反。因此在python脚本中调用c/c++的库,对python进行扩展,是很有必要的。使用python api,http://www.python.org/doc/,需要安装python-dev。
test.cpp文件如下
[cpp]view plaincopy

#include <python2.6/Python.h> //包含python的头文件
// 1 c/cpp中的函数
int my_c_function(constchar *arg) {
int n = system(arg);
return n;
}
// 2 python 包装
static PyObject * wrap_my_c_fun(PyObject *self, PyObject *args) {
constchar * command;
int n;
if (!PyArg_ParseTuple(args, "s", &command))//这句是把python的变量args转换成c的变量command
return NULL;
n = my_c_function(command);//调用c的函数
return Py_BuildValue("i", n);//把c的返回值n转换成python的对象
}
// 3 方法列表
static PyMethodDef MyCppMethods[] = {
//MyCppFun1是python中注册的函数名,wrap_my_c_fun是函数指针
{ "MyCppFun1", wrap_my_c_fun, METH_VARARGS, "Execute a shell command." },
{ NULL, NULL, 0, NULL }
};
// 4 模块初始化方法
PyMODINIT_FUNC initMyCppMole(void) {
//初始模块,把MyCppMethods初始到MyCppMole中
PyObject *m = Py_InitMole("MyCppMole", MyCppMethods);
if (m == NULL)
return;
}

make:
g++ -shared -fpic test.cpp -o MyCppMole.so
编译完毕后,目录下会有一个MyCppMole.so文件

test.py文件如下
[python]view plaincopy

# -*- coding: utf-8 -*-
import MyCppMole
#导入python的模块(也就是c的模块,注意so文件名是MyCppMole
r = MyCppMole.MyCppFun1("ls -l")
print r
print"OK"

执行
lhb@localhost:~/maplib/clib/pyc/invokec$ python test.py
总计 20
-rwxr-xr-x 1 lhb lhb 45 2010-08-11 17:45 make
-rwxr-xr-x 1 lhb lhb 7361 2010-08-12 10:14 MyCppMole.so
-rw-r--r-- 1 lhb lhb 979 2010-08-11 17:45 test.cpp
-rw-r--r-- 1 lhb lhb 181 2010-08-11 17:45 test.py
0
OK

热心网友 时间:2023-10-27 22:47

什么要求算法效率?你的程序有规定的时间和空间要求还是你的程序就是用来计算他人程序算法效率?

热心网友 时间:2023-10-27 22:47

算法效率和你c语言的实现有关,和界面没多少关系的!

热心网友 时间:2023-10-27 22:46

python可以很简单的调用C语言中的函数,需要把C语言中的函数做成动态链接库。
界面用python不影响效率,毕竟不是游戏,一般界面不会太耗CPU。

Python开发效率高,运行效率低。而c/c++恰恰相反。因此在python脚本中调用c/c++的库,对python进行扩展,是很有必要的。使用python api,http://www.python.org/doc/,需要安装python-dev。
test.cpp文件如下
[cpp]view plaincopy

#include <python2.6/Python.h> //包含python的头文件
// 1 c/cpp中的函数
int my_c_function(constchar *arg) {
int n = system(arg);
return n;
}
// 2 python 包装
static PyObject * wrap_my_c_fun(PyObject *self, PyObject *args) {
constchar * command;
int n;
if (!PyArg_ParseTuple(args, "s", &command))//这句是把python的变量args转换成c的变量command
return NULL;
n = my_c_function(command);//调用c的函数
return Py_BuildValue("i", n);//把c的返回值n转换成python的对象
}
// 3 方法列表
static PyMethodDef MyCppMethods[] = {
//MyCppFun1是python中注册的函数名,wrap_my_c_fun是函数指针
{ "MyCppFun1", wrap_my_c_fun, METH_VARARGS, "Execute a shell command." },
{ NULL, NULL, 0, NULL }
};
// 4 模块初始化方法
PyMODINIT_FUNC initMyCppMole(void) {
//初始模块,把MyCppMethods初始到MyCppMole中
PyObject *m = Py_InitMole("MyCppMole", MyCppMethods);
if (m == NULL)
return;
}

make:
g++ -shared -fpic test.cpp -o MyCppMole.so
编译完毕后,目录下会有一个MyCppMole.so文件

test.py文件如下
[python]view plaincopy

# -*- coding: utf-8 -*-
import MyCppMole
#导入python的模块(也就是c的模块,注意so文件名是MyCppMole
r = MyCppMole.MyCppFun1("ls -l")
print r
print"OK"

执行
lhb@localhost:~/maplib/clib/pyc/invokec$ python test.py
总计 20
-rwxr-xr-x 1 lhb lhb 45 2010-08-11 17:45 make
-rwxr-xr-x 1 lhb lhb 7361 2010-08-12 10:14 MyCppMole.so
-rw-r--r-- 1 lhb lhb 979 2010-08-11 17:45 test.cpp
-rw-r--r-- 1 lhb lhb 181 2010-08-11 17:45 test.py
0
OK

热心网友 时间:2023-10-27 22:47

什么要求算法效率?你的程序有规定的时间和空间要求还是你的程序就是用来计算他人程序算法效率?

热心网友 时间:2023-10-27 22:47

算法效率和你c语言的实现有关,和界面没多少关系的!

热心网友 时间:2023-10-27 22:46

python可以很简单的调用C语言中的函数,需要把C语言中的函数做成动态链接库。
界面用python不影响效率,毕竟不是游戏,一般界面不会太耗CPU。

Python开发效率高,运行效率低。而c/c++恰恰相反。因此在python脚本中调用c/c++的库,对python进行扩展,是很有必要的。使用python api,http://www.python.org/doc/,需要安装python-dev。
test.cpp文件如下
[cpp]view plaincopy

#include <python2.6/Python.h> //包含python的头文件
// 1 c/cpp中的函数
int my_c_function(constchar *arg) {
int n = system(arg);
return n;
}
// 2 python 包装
static PyObject * wrap_my_c_fun(PyObject *self, PyObject *args) {
constchar * command;
int n;
if (!PyArg_ParseTuple(args, "s", &command))//这句是把python的变量args转换成c的变量command
return NULL;
n = my_c_function(command);//调用c的函数
return Py_BuildValue("i", n);//把c的返回值n转换成python的对象
}
// 3 方法列表
static PyMethodDef MyCppMethods[] = {
//MyCppFun1是python中注册的函数名,wrap_my_c_fun是函数指针
{ "MyCppFun1", wrap_my_c_fun, METH_VARARGS, "Execute a shell command." },
{ NULL, NULL, 0, NULL }
};
// 4 模块初始化方法
PyMODINIT_FUNC initMyCppMole(void) {
//初始模块,把MyCppMethods初始到MyCppMole中
PyObject *m = Py_InitMole("MyCppMole", MyCppMethods);
if (m == NULL)
return;
}

make:
g++ -shared -fpic test.cpp -o MyCppMole.so
编译完毕后,目录下会有一个MyCppMole.so文件

test.py文件如下
[python]view plaincopy

# -*- coding: utf-8 -*-
import MyCppMole
#导入python的模块(也就是c的模块,注意so文件名是MyCppMole
r = MyCppMole.MyCppFun1("ls -l")
print r
print"OK"

执行
lhb@localhost:~/maplib/clib/pyc/invokec$ python test.py
总计 20
-rwxr-xr-x 1 lhb lhb 45 2010-08-11 17:45 make
-rwxr-xr-x 1 lhb lhb 7361 2010-08-12 10:14 MyCppMole.so
-rw-r--r-- 1 lhb lhb 979 2010-08-11 17:45 test.cpp
-rw-r--r-- 1 lhb lhb 181 2010-08-11 17:45 test.py
0
OK

热心网友 时间:2023-10-27 22:46

python可以很简单的调用C语言中的函数,需要把C语言中的函数做成动态链接库。
界面用python不影响效率,毕竟不是游戏,一般界面不会太耗CPU。

Python开发效率高,运行效率低。而c/c++恰恰相反。因此在python脚本中调用c/c++的库,对python进行扩展,是很有必要的。使用python api,http://www.python.org/doc/,需要安装python-dev。
test.cpp文件如下
[cpp]view plaincopy

#include <python2.6/Python.h> //包含python的头文件
// 1 c/cpp中的函数
int my_c_function(constchar *arg) {
int n = system(arg);
return n;
}
// 2 python 包装
static PyObject * wrap_my_c_fun(PyObject *self, PyObject *args) {
constchar * command;
int n;
if (!PyArg_ParseTuple(args, "s", &command))//这句是把python的变量args转换成c的变量command
return NULL;
n = my_c_function(command);//调用c的函数
return Py_BuildValue("i", n);//把c的返回值n转换成python的对象
}
// 3 方法列表
static PyMethodDef MyCppMethods[] = {
//MyCppFun1是python中注册的函数名,wrap_my_c_fun是函数指针
{ "MyCppFun1", wrap_my_c_fun, METH_VARARGS, "Execute a shell command." },
{ NULL, NULL, 0, NULL }
};
// 4 模块初始化方法
PyMODINIT_FUNC initMyCppMole(void) {
//初始模块,把MyCppMethods初始到MyCppMole中
PyObject *m = Py_InitMole("MyCppMole", MyCppMethods);
if (m == NULL)
return;
}

make:
g++ -shared -fpic test.cpp -o MyCppMole.so
编译完毕后,目录下会有一个MyCppMole.so文件

test.py文件如下
[python]view plaincopy

# -*- coding: utf-8 -*-
import MyCppMole
#导入python的模块(也就是c的模块,注意so文件名是MyCppMole
r = MyCppMole.MyCppFun1("ls -l")
print r
print"OK"

执行
lhb@localhost:~/maplib/clib/pyc/invokec$ python test.py
总计 20
-rwxr-xr-x 1 lhb lhb 45 2010-08-11 17:45 make
-rwxr-xr-x 1 lhb lhb 7361 2010-08-12 10:14 MyCppMole.so
-rw-r--r-- 1 lhb lhb 979 2010-08-11 17:45 test.cpp
-rw-r--r-- 1 lhb lhb 181 2010-08-11 17:45 test.py
0
OK

热心网友 时间:2023-10-27 22:47

什么要求算法效率?你的程序有规定的时间和空间要求还是你的程序就是用来计算他人程序算法效率?

热心网友 时间:2023-10-27 22:47

什么要求算法效率?你的程序有规定的时间和空间要求还是你的程序就是用来计算他人程序算法效率?

热心网友 时间:2023-10-27 22:47

算法效率和你c语言的实现有关,和界面没多少关系的!

热心网友 时间:2023-10-27 22:47

算法效率和你c语言的实现有关,和界面没多少关系的!

热心网友 时间:2023-10-27 22:46

python可以很简单的调用C语言中的函数,需要把C语言中的函数做成动态链接库。
界面用python不影响效率,毕竟不是游戏,一般界面不会太耗CPU。

Python开发效率高,运行效率低。而c/c++恰恰相反。因此在python脚本中调用c/c++的库,对python进行扩展,是很有必要的。使用python api,http://www.python.org/doc/,需要安装python-dev。
test.cpp文件如下
[cpp]view plaincopy

#include <python2.6/Python.h> //包含python的头文件
// 1 c/cpp中的函数
int my_c_function(constchar *arg) {
int n = system(arg);
return n;
}
// 2 python 包装
static PyObject * wrap_my_c_fun(PyObject *self, PyObject *args) {
constchar * command;
int n;
if (!PyArg_ParseTuple(args, "s", &command))//这句是把python的变量args转换成c的变量command
return NULL;
n = my_c_function(command);//调用c的函数
return Py_BuildValue("i", n);//把c的返回值n转换成python的对象
}
// 3 方法列表
static PyMethodDef MyCppMethods[] = {
//MyCppFun1是python中注册的函数名,wrap_my_c_fun是函数指针
{ "MyCppFun1", wrap_my_c_fun, METH_VARARGS, "Execute a shell command." },
{ NULL, NULL, 0, NULL }
};
// 4 模块初始化方法
PyMODINIT_FUNC initMyCppMole(void) {
//初始模块,把MyCppMethods初始到MyCppMole中
PyObject *m = Py_InitMole("MyCppMole", MyCppMethods);
if (m == NULL)
return;
}

make:
g++ -shared -fpic test.cpp -o MyCppMole.so
编译完毕后,目录下会有一个MyCppMole.so文件

test.py文件如下
[python]view plaincopy

# -*- coding: utf-8 -*-
import MyCppMole
#导入python的模块(也就是c的模块,注意so文件名是MyCppMole
r = MyCppMole.MyCppFun1("ls -l")
print r
print"OK"

执行
lhb@localhost:~/maplib/clib/pyc/invokec$ python test.py
总计 20
-rwxr-xr-x 1 lhb lhb 45 2010-08-11 17:45 make
-rwxr-xr-x 1 lhb lhb 7361 2010-08-12 10:14 MyCppMole.so
-rw-r--r-- 1 lhb lhb 979 2010-08-11 17:45 test.cpp
-rw-r--r-- 1 lhb lhb 181 2010-08-11 17:45 test.py
0
OK

热心网友 时间:2023-10-27 22:47

什么要求算法效率?你的程序有规定的时间和空间要求还是你的程序就是用来计算他人程序算法效率?

热心网友 时间:2023-10-27 22:46

python可以很简单的调用C语言中的函数,需要把C语言中的函数做成动态链接库。
界面用python不影响效率,毕竟不是游戏,一般界面不会太耗CPU。

Python开发效率高,运行效率低。而c/c++恰恰相反。因此在python脚本中调用c/c++的库,对python进行扩展,是很有必要的。使用python api,http://www.python.org/doc/,需要安装python-dev。
test.cpp文件如下
[cpp]view plaincopy

#include <python2.6/Python.h> //包含python的头文件
// 1 c/cpp中的函数
int my_c_function(constchar *arg) {
int n = system(arg);
return n;
}
// 2 python 包装
static PyObject * wrap_my_c_fun(PyObject *self, PyObject *args) {
constchar * command;
int n;
if (!PyArg_ParseTuple(args, "s", &command))//这句是把python的变量args转换成c的变量command
return NULL;
n = my_c_function(command);//调用c的函数
return Py_BuildValue("i", n);//把c的返回值n转换成python的对象
}
// 3 方法列表
static PyMethodDef MyCppMethods[] = {
//MyCppFun1是python中注册的函数名,wrap_my_c_fun是函数指针
{ "MyCppFun1", wrap_my_c_fun, METH_VARARGS, "Execute a shell command." },
{ NULL, NULL, 0, NULL }
};
// 4 模块初始化方法
PyMODINIT_FUNC initMyCppMole(void) {
//初始模块,把MyCppMethods初始到MyCppMole中
PyObject *m = Py_InitMole("MyCppMole", MyCppMethods);
if (m == NULL)
return;
}

make:
g++ -shared -fpic test.cpp -o MyCppMole.so
编译完毕后,目录下会有一个MyCppMole.so文件

test.py文件如下
[python]view plaincopy

# -*- coding: utf-8 -*-
import MyCppMole
#导入python的模块(也就是c的模块,注意so文件名是MyCppMole
r = MyCppMole.MyCppFun1("ls -l")
print r
print"OK"

执行
lhb@localhost:~/maplib/clib/pyc/invokec$ python test.py
总计 20
-rwxr-xr-x 1 lhb lhb 45 2010-08-11 17:45 make
-rwxr-xr-x 1 lhb lhb 7361 2010-08-12 10:14 MyCppMole.so
-rw-r--r-- 1 lhb lhb 979 2010-08-11 17:45 test.cpp
-rw-r--r-- 1 lhb lhb 181 2010-08-11 17:45 test.py
0
OK

热心网友 时间:2023-10-27 22:47

算法效率和你c语言的实现有关,和界面没多少关系的!

热心网友 时间:2023-10-27 22:47

什么要求算法效率?你的程序有规定的时间和空间要求还是你的程序就是用来计算他人程序算法效率?

热心网友 时间:2023-10-27 22:47

算法效率和你c语言的实现有关,和界面没多少关系的!

热心网友 时间:2023-10-27 22:47

python可以很简单的调用C语言中的函数,需要把C语言中的函数做成动态链接库。
界面用python不影响效率,毕竟不是游戏,一般界面不会太耗CPU。

Python开发效率高,运行效率低。而c/c++恰恰相反。因此在python脚本中调用c/c++的库,对python进行扩展,是很有必要的。使用python api,http://www.python.org/doc/,需要安装python-dev。
test.cpp文件如下
[cpp]view plaincopy

#include <python2.6/Python.h> //包含python的头文件
// 1 c/cpp中的函数
int my_c_function(constchar *arg) {
int n = system(arg);
return n;
}
// 2 python 包装
static PyObject * wrap_my_c_fun(PyObject *self, PyObject *args) {
constchar * command;
int n;
if (!PyArg_ParseTuple(args, "s", &command))//这句是把python的变量args转换成c的变量command
return NULL;
n = my_c_function(command);//调用c的函数
return Py_BuildValue("i", n);//把c的返回值n转换成python的对象
}
// 3 方法列表
static PyMethodDef MyCppMethods[] = {
//MyCppFun1是python中注册的函数名,wrap_my_c_fun是函数指针
{ "MyCppFun1", wrap_my_c_fun, METH_VARARGS, "Execute a shell command." },
{ NULL, NULL, 0, NULL }
};
// 4 模块初始化方法
PyMODINIT_FUNC initMyCppMole(void) {
//初始模块,把MyCppMethods初始到MyCppMole中
PyObject *m = Py_InitMole("MyCppMole", MyCppMethods);
if (m == NULL)
return;
}

make:
g++ -shared -fpic test.cpp -o MyCppMole.so
编译完毕后,目录下会有一个MyCppMole.so文件

test.py文件如下
[python]view plaincopy

# -*- coding: utf-8 -*-
import MyCppMole
#导入python的模块(也就是c的模块,注意so文件名是MyCppMole
r = MyCppMole.MyCppFun1("ls -l")
print r
print"OK"

执行
lhb@localhost:~/maplib/clib/pyc/invokec$ python test.py
总计 20
-rwxr-xr-x 1 lhb lhb 45 2010-08-11 17:45 make
-rwxr-xr-x 1 lhb lhb 7361 2010-08-12 10:14 MyCppMole.so
-rw-r--r-- 1 lhb lhb 979 2010-08-11 17:45 test.cpp
-rw-r--r-- 1 lhb lhb 181 2010-08-11 17:45 test.py
0
OK

热心网友 时间:2023-10-27 22:47

什么要求算法效率?你的程序有规定的时间和空间要求还是你的程序就是用来计算他人程序算法效率?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
荣耀v20杀后台严重? 聊天时哪些回复让人感觉不舒服? 货物运输保险案例分析 卞和泣玉注释 求解,卞和泣玉没学过,在线等解。 葛加走之底读什么 在等腰三角形ABC中,AB=AC=5,BC=6,求角B的三角函数值 ...人开走一架战斗机,在一架客机下面飞,好几个飞机来拦截, ...话是三架飞机 机型各不同 在山区飞行发现恐怖分子用驴车运核弹 用AK... ...的成为战斗机飞行员。战争结束回国继续抢银 python 调用 vc++生成的 dll 中的函数,出错求助,谢谢 上海市洛克·外滩源怎么样?有什么好玩的地方? 建设用地规划申请书怎么写 什么是网络??或者是网络的定义是??? 上海证大外滩国际金融服务中心置业有限公司怎么样? 如何使用python获取cpp文件中的函数名 C++调用python模块 上海外滩云财金融服务有限公司怎么样? 互联网+的基本内涵 如何得到python中调用c++函数的返回值 20CSDN 上海外滩滨江综合开发有限公司怎么样? 上海外滩源发展有限公司怎么样? .py文件调用.cpp文件 运行.py文件时,输出.cpp文件的结果,也就是说.py文件调用.cpp文件,怎么做啊啊啊啊 安全台账十二 各验收表验收时间的间隔各是多少? 外滩控股集团有限公司上海第一分公司怎么样? 脚手架作业完工验收后许可证各种记录由安全管理部门归档保存期限为 上海新外滩企业发展有限公司怎么样? 人在5楼,电动车怎么把电瓶取下来充电 电动车电瓶怎么取下来.取下来后怎么充电 上海外滩投资咨询有限公司怎么样? 上海外滩科浦工程管理有限公司怎么样? 养殖金蝉是竹柳好还是旱柳好。 主体建设项目土地使用申请书怎么写? 养知了猴用什么树 互联网,it行业的产品含义 上海外滩的万国建筑群分别是什么风格的建筑,用处是什么?怎样才能进去参观? 需要向政府申请建设桥梁,申请书如何写 养金蝉种什么树 哪位高手知道这个python的返回值在C++中怎么获取 种植金蝉什么树最好 金蝉喜欢什么树 常见的网络有哪几种,计算机网络和互联网的定义,计算机网络有哪几种,分别由哪几部分组成,每部分的含义 葡萄园可以养金蝉,这样做的好处是什么? 知了猴喜欢什么树 如何理解“互联网+”战略 一千买什么华为手机好? 梧桐树根能养金蝉吗? 互联网咖的基本内涵与趋势 华为畅享10e怎么选择用哪张卡的网? 华为畅想e用什么内存卡