gpt4 book ai didi

Python weave 来加速我们的代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:50 27 4
gpt4 key购买 nike

我们非常感谢任何形式的帮助,因为我们正在疯狂地使用 C 语言使我们的程序变得更快。

获取的值不变,始终是0,0,0,0

这是在 Linux 中运行的代码:

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

最佳答案

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

weave.inline(code, ['coorX','coorY','INC'])

其次,您需要从编织代码中返回您想要的值,因为在 C 中修改它们不会影响它们在 Python 中的值。这是一种方法:

py::tuple ret(4);
ret[0] = yminf;
ret[1] = xminc;
ret[2] = xmaxc;
ret[3] = ymaxf;
return_val = ret;

通过这些修改,以下文件似乎可以正常工作:

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

关于Python weave 来加速我们的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23812229/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com