我有大约50行代码,它不是基于任何循环变量(这就是我不能为循环做的原因)但是我想多次运行这段代码以便我的输出数组不断积累长度。有没有办法做到这一点?我想执行10,000次这个.py文件。让我知道我该怎么做。我知道通常我会通过输入
在我的终端上执行它execfile(' filename.py')
但怎么这样做几次? 谢谢!
.py文件中的内容示例:说我有一堆我想计算卡平方的值的分布,并在10,000次迭代后保存数组中的所有值chi = [],如何我会这样做吗?
chi = []
def chisqg(ydata,ymod,sd=None):
if sd==None:
chisq=np.sum((ydata-ymod)**2)
else:
chisq=np.sum( ((ydata-ymod)/sd)**2 )
return chisq
chi1 = chisqg(y1,mod1,sd=0.1)
chi.append(chi1)
答案 0 :(得分:3)
我不确定你为什么认为一个循环在这里工作;如果您希望chi
变量最终输入10k条目,您只需将文件的最后几行更改为:
for i in range(10000):
chi1 = chisqg(y1,mod1,sd=0.1)
chi.append(chi1)
答案 1 :(得分:2)
for i in range(10000):
execfile("filename.py")
答案 2 :(得分:1)
如果您不想同时执行文件,那么最简单的方法是使用:
在窗户上:
for x in range(0, 30):
%run -i "insert_your_file.py"
在 Linux 或 OSX 上
for x in range(0, 30):
%run -i 'insert_your_file.py'
***是的,双引号很重要。
有关 %run 的更多信息: enter link description here
这类似于在系统提示符下运行 python 文件 args,但具有为您提供 IPython 回溯的优势,并将所有变量加载到您的交互式命名空间中以供进一步使用(除非使用了 -p,请参见下文)。< /p>
该文件在最初仅由 name=='main' 和 sys.argv 组成的命名空间中执行,如所示构造。因此,它会将其环境视为作为独立程序运行(除了共享全局对象,例如以前导入的模块)。但是在执行之后,IPython 交互式命名空间将更新为程序中定义的所有变量(name 和 sys.argv 除外)。这允许为交互式工作非常方便地加载代码,同时为每个程序提供一个“干净的表”来运行。