如何解决运行我的程序 N 次并返回平均运行时间 -bash
我正在尝试制作一个 bash 文件,该文件将朗姆酒我的程序 N 次并使用某些参数返回运行的平均时间。 当我尝试使用此代码时:
#!/bin/sh
NValues=(400)
kValues=(10)
echo "Enter Size(N)"
read N
CURR=0
i=1
sum=0
touch mean_times_log.txt
while [ $i -le $N ]
do
start=`date +%s`
#running my program with arguments
python3.8.5 -m invoke run -k=$1 -n=$2 --no-Random
end=`date +%s`
CURR=$((end - start))
sum=$((CURR + sum))
i=$((i + 1))
done
echo input k = $1 and n = $2 and Random = --Random.Execution mean time over N runs was $((sum/N)) seconds.>> mean_times_log.txt
mv mean_times_log.txt mean_times_log_$( date '+%Y-%m-%d_%H-%M-%S' ).txt
echo file was created
我收到不确定是否已连接的错误。我的程序本身运行得很好。 错误:
Traceback (most recent call last):
File "/usr/local/lib/python3.8.5/lib/python3.8/runpy.py",line 194,in _run_module_as_main
return _run_code(code,main_globals,None,File "/usr/local/lib/python3.8.5/lib/python3.8/runpy.py",line 87,in _run_code
exec(code,run_globals)
File "/usr/local/lib/python3.8.5/lib/python3.8/site-packages/invoke/__main__.py",line 3,in <module>
program.run()
File "/usr/local/lib/python3.8.5/lib/python3.8/site-packages/invoke/program.py",line 375,in run
self.parse_tasks()
File "/usr/local/lib/python3.8.5/lib/python3.8/site-packages/invoke/program.py",line 739,in parse_tasks
result = self.parser.parse_argv(self.core.unparsed)
File "/usr/local/lib/python3.8.5/lib/python3.8/site-packages/invoke/parser/parser.py",line 169,in parse_argv
machine.handle(token)
File "/usr/local/lib/python3.8.5/lib/python3.8/site-packages/invoke/parser/parser.py",line 260,in handle
self.see_value(token)
File "/usr/local/lib/python3.8.5/lib/python3.8/site-packages/invoke/parser/parser.py",line 409,in see_value
self.flag.value = value
File "/usr/local/lib/python3.8.5/lib/python3.8/site-packages/invoke/parser/argument.py",line 120,in value
self.set_value(arg,cast=True)
File "/usr/local/lib/python3.8.5/lib/python3.8/site-packages/invoke/parser/argument.py",line 151,in set_value
self._value = func(value)
ValueError: invalid literal for int() with base 10: ''
the k = and n = and Random = --no-Random run ended with 1 seconds
Traceback (most recent call last):
File "/usr/local/lib/python3.8.5/lib/python3.8/runpy.py",in set_value
self._value = func(value)
ValueError: invalid literal for int() with base 10: ''
想知道我做错了什么或者我怎样才能得到我需要的结果。谢谢
解决方法
存在多个问题:
- 在 bash
//
is not a comment 中。改用#
。 - 您将位置参数
$1
和$2
传递给您的 Python 程序。但是,您似乎在没有任何参数的情况下运行脚本,因此这些都是空的,并且您的 Python 程序抱怨空字符串:invalid literal for int() with base 10: ''
.
您似乎想在这里使用$kValues
和$NValues
(它们目前未使用)。 -
kValues=(400)
是一个具有单个值的数组。您确定要数组吗?
在 bash 5 或更高版本中,我会这样写:
#! /usr/bin/env bash
k=10 n=400
read -p "Enter number of runs: " runs
t=$EPOCHSECONDS
for ((i=0; i<runs; ++i)); do
python3 -m invoke run -k=$k -n=$n --no-Random
done
((t = EPOCHSECONDS - t))
echo "input k = $1 and n = $2 and Random = --Random.Execution" \
"mean time over $runs runs was $((t/runs)) seconds." \
> "mean_times_log_$(date +%Y-%m-%d_%H-%M-%S).txt"
echo "file was created"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。