Python。烧瓶。点击后获取列表[重复]
Posted
技术标签:
【中文标题】Python。烧瓶。点击后获取列表[重复]【英文标题】:Python. Flask. Get list after click [duplicate] 【发布时间】:2021-12-21 01:32:17 【问题描述】:我有一个在进程中运行函数的简单代码。此函数将数字附加到列表中。在我的代码版本中,我得到一个空列表。点击停止按钮后如何获取此列表?
from multiprocessing import Process
from flask import Flask
app = Flask(__name__)
logs = []
def test():
for i in range(100):
logs.append(i)
time.sleep(1)
@app.route('/', methods=['POST', 'GET'])
def main():
global p
if request.method == 'POST':
index = request.form['index']
if index == 'start':
p = Process(target = test)
p.start()
if index == 'stop':
print(logs)
p.kill()
return redirect(url_for('main'))
return render_template('index.html')
app.run(debug=True)
【问题讨论】:
***.com/a/11215750 这能回答你的问题吗? Globals variables and Python multiprocessing 【参考方案1】:你选择了错误的方式。首先,您错过了,不仅只有一个用户会使用您的网站,所以即使它会起作用,他们也会看到一次计数的结果。
所以,我是否建议在这里,例如,使用 DB,当用户第一次加载页面时为每个特定用户创建一个带有时间戳的记录,一旦用户按下按钮,找出现在和记录时间之间的差异。
【讨论】:
只有一个用户【参考方案2】:我打赌你这会奏效的!
from threading import Thread
from flask import Flask
app = Flask(__name__)
logs = []
stop_thread = False
def test():
for i in range(100):
if stop_thread:
return
logs.append(i)
time.sleep(1)
@app.route('/', methods=['POST', 'GET'])
def main():
global stop_thread
if request.method == 'POST':
index = request.form['index']
if index == 'start':
t = Thread(target = test)
t.start()
if index == 'stop':
print(logs)
stop_thread = True;
return redirect(url_for('main'))
return render_template('index.html')
app.run(debug=True)
【讨论】:
线程不适合,不能作为进程杀死 是的,我只是想展示线程和进程访问全局变量的方式之间的区别以上是关于Python。烧瓶。点击后获取列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章