gpt4 book ai didi

multithreading - 如何在另一个应用程序中运行 web.py 服务器

转载 作者:行者123 更新时间:2023-12-03 13:00:47 25 4
gpt4 key购买 nike

我有一个用 Python 编写的小型桌面游戏,希望能够在游戏运行时访问它的内部。我正在考虑通过在单独的线程上运行 web.py 并提供页面来做到这一点。所以当我访问 http://localhost:8080/map它将显示当前级别的 map 以进行调试。

我安装并运行了 web.py,但我真的不知道从这里去哪里。我尝试在单独的线程中启动 web.application,但由于某种原因,我无法在线程之间共享数据(我认为)。

下面是一个简单的例子,我正在使用测试这个想法。我以为 http://localhost:8080/每次都会返回不同的数字,但它一直显示相同的数字 (5)。如果我在 while 循环内打印 common_value,它会递增,但它从 5 开始。

我在这里缺少什么,这种方法在任何地方都接近合理吗?如果可能的话,我真的很想避免使用数据库。

import web
import thread

urls = (
'/(.*)', 'hello'
)

app = web.application(urls, globals())

common_value = 5

class hello:
def GET(self):
return str(common_value)

if __name__ == "__main__":
thread.start_new_thread(app.run, ())
while 1:
common_value = common_value + 1

最佳答案

经过一番搜索,我找到了一个可行的解决方案:

如果 common_value 在单独的模块中定义并从那里导入,则上述代码有效。所以本质上(请原谅命名):

东西.py

common_value = 0

服务器.py
import web
import thread
import thingy

import sys; sys.path.insert(0, ".")

urls = (
'/(.*)', 'hello'
)

app = web.application(urls, globals())

thingy.common_value = 5

class hello:
def GET(self):
return str(thingy.common_value)

if __name__ == "__main__":
thread.start_new_thread(app.run, ())
while 1:
thingy.common_value = thingy.common_value + 1

关于multithreading - 如何在另一个应用程序中运行 web.py 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9714777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com