python 线程的 "On Stop" 方法
An "On Stop" method for python Threads
我和一个朋友正在面临编程挑战,谁能制作出好的 VOS(虚拟操作系统),目前我的正在运行来自程序中线程的自定义程序,我目前正在使用 Tkinter,因此单独的线程有自己的拥有 self.master.mainloop()。我将所有线程都存储在一个列表中,但我想知道我是否可以在线程中调用一个函数,该函数将调用程序中的一个子例程,告诉它执行 self.master.destroy()。有什么办法吗?
我想要类似
的东西
class ToBeThread():
def __init__(self):
self.master = Tk()
self.master.mainloop()
def on_stop(self, reason):
self.master.destroy()
然后在我的主课
from threading import Thread
thread = Thread(ToBeThread())
thread.setDaemon(True)
thread.on_stop += ToBeThread.on_stop # Similar to how it is done in c#
thread.start()
...
...
thread.stop() # This calls the functions related to the "on_stop"
我找到了一种方法来做到这一点,所以对于我所做的任何疑惑:
from threading import Thread
class MyThread(Thread):def __init__(self, method, delay=-1):
Thread.__init__(self)
self.method = method
self._running = False
self.delay = delay
self.setDaemon(True)
def run(self):
self._running = True
while self._running == True:
self.method()
if self.delay != -1:
time.sleep(self.delay)
def stop(self):
self._running = False
这允许我通过初始化程序编写传递一个函数,它会 运行 它每隔 x 秒或尽可能多次,直到我做 thread.stop()
我和一个朋友正在面临编程挑战,谁能制作出好的 VOS(虚拟操作系统),目前我的正在运行来自程序中线程的自定义程序,我目前正在使用 Tkinter,因此单独的线程有自己的拥有 self.master.mainloop()。我将所有线程都存储在一个列表中,但我想知道我是否可以在线程中调用一个函数,该函数将调用程序中的一个子例程,告诉它执行 self.master.destroy()。有什么办法吗?
我想要类似
的东西class ToBeThread():
def __init__(self):
self.master = Tk()
self.master.mainloop()
def on_stop(self, reason):
self.master.destroy()
然后在我的主课
from threading import Thread
thread = Thread(ToBeThread())
thread.setDaemon(True)
thread.on_stop += ToBeThread.on_stop # Similar to how it is done in c#
thread.start()
...
...
thread.stop() # This calls the functions related to the "on_stop"
我找到了一种方法来做到这一点,所以对于我所做的任何疑惑:
from threading import Thread
class MyThread(Thread):def __init__(self, method, delay=-1):
Thread.__init__(self)
self.method = method
self._running = False
self.delay = delay
self.setDaemon(True)
def run(self):
self._running = True
while self._running == True:
self.method()
if self.delay != -1:
time.sleep(self.delay)
def stop(self):
self._running = False
这允许我通过初始化程序编写传递一个函数,它会 运行 它每隔 x 秒或尽可能多次,直到我做 thread.stop()