在Flask

时间:2018-02-28 14:47:24

标签: python flask time

我想测量用户做出决定所需的时间(或者只是按下"提交"按钮)。在python本身中,我通常使用

来测量代码的时间
start_time = time.clock()
time_diff = start_time - time.clock()

但是,在Web应用程序中,我无法理解它应该如何工作。

@app.route('/survey')
def main():
    user = request.cookies.get('user')
if not user:
    return redirect(url_for('login'))
    msg = ''
    word = request.args.get('word')
    score = request.args.get('score')
start_time = time.clock()
if score:
    time_diff = start_time - time.clock()
    record_to_csv(user, word, score, time_diff)
return render_template(
    'main.html',
    self_url=url_for('main'),
    word=choice(words),
    msg=msg,
)

我的第一个想法是将start_time放在"如果得分"然后测量之后的时间。但不知何故,我总是得到-4.10546782348e-07的同一时间。所以我想知道问题是我没有将时间测量放在循环中的正确位置,或者它是否是一个完全错误的方法。任何评论都非常感谢。

2 个答案:

答案 0 :(得分:0)

您可以在会话中保留start_time,并在发布请求后进行检查:

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        time_diff = time.clock() - session.get('start_time', 0)
        print time_diff

    session['start_time'] = time.clock()
    return render_template('index.html')

否则每次请求后都会丢失这个可传播的内容。

答案 1 :(得分:0)

所以我把开始时间测量放在外面,然后在“if score”之后测量差异。像这样我得到累积时间,这就是为什么我总是减去上一步的时间。似乎工作。我还将time.clock()函数更改为time.time()。

db.run "CREATE DATABASE my_new_db"