首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python编织以加快我们的代码

Python编织以加快我们的代码
EN

Stack Overflow用户
提问于 2014-05-22 16:16:40
回答 1查看 118关注 0票数 1

我们真的很感激任何形式的帮助,因为我们正在疯狂地使用我们的程序使它使用C语言更快。

得到的值不变,总是0,0,0,0

下面是在Linux中运行的代码:

代码语言:javascript
运行
复制
from scipy import weave

pasa = 0
coorX =  -11.8
coorY = -7.9
INC=0.01296
##def weave_update():

code="""
int i,j, pasa;
double coorX, coorY,INC;

for (i=0; i < 1296;i++){

    yminf = coorY + INC*(i);
    ymaxf = yminf + INC;

    for (j=0; j < 1936;j++){

        xminc = coorX + INC*(j); 
        xmaxc = xminc + INC;
        pasa = 1;
        break;
    }
    if (pasa == 1){
    break;
    }
}
"""
weave.inline(code,['yminf','xminc','xmaxc','ymaxf'],type_converters=weave.converters.blitz,compiler='gcc')
print yminf,xminc,xmaxc,ymaxf
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-22 17:20:45

看起来有两个问题。首先,您需要传入C代码需要从python访问的所有变量。因此,您的inline调用需要:

代码语言:javascript
运行
复制
weave.inline(code, ['coorX','coorY','INC'])

其次,您需要从编织代码中返回所需的值,因为在C中修改它们不会影响它们在Python中的值。有一种方法可以做到:

代码语言:javascript
运行
复制
py::tuple ret(4);
ret[0] = yminf;
ret[1] = xminc;
ret[2] = xmaxc;
ret[3] = ymaxf;
return_val = ret;

通过这些修改,下列文件似乎正确工作:

代码语言:javascript
运行
复制
from scipy import weave

coorX = -11.8
coorY = -7.9
INC = 0.01296

code="""
int i,j, pasa = 0;
double yminf,xminc,xmaxc,ymaxf;

for (i=0; i < 1296;i++){

    yminf = coorY + INC*(i);
    ymaxf = yminf + INC;

    for (j=0; j < 1936;j++){

        xminc = coorX + INC*(j);
        xmaxc = xminc + INC;
        pasa = 1;
        break;
    }
    if (pasa == 1){
    break;
    }
}
py::tuple ret(4);
ret[0] = yminf;
ret[1] = xminc;
ret[2] = xmaxc;
ret[3] = ymaxf;
return_val = ret;
"""
yminf,xminc,xmaxc,ymaxf = weave.inline(code,['coorX','coorY','INC'])
print yminf,xminc,xmaxc,ymaxf
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23812229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档