Python 把烧瓶放进线里
我尝试以线程的形式调用一个方法,然后在StartServer方法在后台运行时调用另一个方法,但在执行self.thread.run()时,代码被卡住了。有什么想法吗?我试图将启动服务器放在另一个类中,在一个外部函数中,但我仍然存在这个问题Python 把烧瓶放进线里,python,multithreading,flask,Python,Multithreading,Flask,我尝试以线程的形式调用一个方法,然后在StartServer方法在后台运行时调用另一个方法,但在执行self.thread.run()时,代码被卡住了。有什么想法吗?我试图将启动服务器放在另一个类中,在一个外部函数中,但我仍然存在这个问题 import time import webview import threading from flask import Flask class Windows: def __init__(self, EntryPoint = "ind
import time
import webview
import threading
from flask import Flask
class Windows:
def __init__(self, EntryPoint = "index.html"):
self.EntryPointContent = self.ReadPage(EntryPoint)
self.Thread = threading.Thread(target = self.StartServer)
self.Thread.daemon = True
self.Thread.run()
self.ShowWindows()
def StartServer(self):
app = Flask(__name__)
app.debug = False
app.reloader = False
@app.route("/")
def root():
return self.EntryPointContent
app.run()
def ReadPage(self, FileName):
File = open(FileName, "r")
return File.read()
def ShowWindows(self):
webview.create_window("Hey !", "http://localhost:5000")
webview.start()
app = Windows(EntryPoint="page.html")
我猜
app.reloader = False
没有做你希望做的事。相反,试试看
app.run(use_reloader=False)
我猜
app.reloader = False
没有做你希望做的事。相反,试试看
app.run(use_reloader=False)
调用
Thread.start()
,而不是Thread.run()
。Run将只调用当前线程上的StartServer
方法。下面是一个简短的示例,您可以尝试一下
import threading
from time import sleep
def l(msg):
while True:
print(msg)
sleep(1)
thread = threading.Thread(target=lambda: l('foo'))
thread.start() # swap with thread.run()
l('bar')
调用
Thread.start()
,而不是Thread.run()
。Run将只调用当前线程上的StartServer
方法。下面是一个简短的示例,您可以尝试一下
import threading
from time import sleep
def l(msg):
while True:
print(msg)
sleep(1)
thread = threading.Thread(target=lambda: l('foo'))
thread.start() # swap with thread.run()
l('bar')
尝试从新线程调用该类。尝试从新线程调用该类。