我有一个关于汉诺塔的简单游戏,目前可以在终端运行。它允许玩家在终端输入他的回合并向终端输出可视化。
我的任务是制作一个 flask 应用程序,它将打开一个 html 页面,其中 JS 脚本将轮询服务器以获取有关游戏的信息,并将从终端到网页的可视化加倍。
我的问题是游戏和 flask 都有一个主循环,如果我依次运行它们,它们将无法并行运行。
所以我需要游戏在终端中运行,玩家在终端中轮流,但我需要网络服务器获取游戏状态并显示它。
我的问题:我应该为此使用什么?多处理线程?
假设我有一个 flask View
from game import game
@app.route('/get_updates')
def get_updates():
return flask.jsonify(game.instance().board)
如果 flask 和游戏在不同的线程中运行,它会如何工作?如何从另一个线程获取游戏对象?
请您参考如下方法:
在不同的线程中运行您的游戏可能更好?
import threading
import time
from flask import Flask, render_template
class myGame(threading.Thread):
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.board = 1
def run(self):
pass
app = Flask(__name__)
game = myGame()
@app.route('/get_updates')
def get_updates():
return flask.jsonify(game.board)
if __name__ == "__main__":
game.start()
app.run(port=81, host='0.0.0.0', debug=False, use_reloader=False)
