gpt4 book ai didi

python - 在 start_new_thread 之后加入线程

转载 作者:行者123 更新时间:2023-11-28 19:26:43 24 4
gpt4 key购买 nike

当我单独运行下面的函数时,它会在 3 秒后退出,但是当我在线程中调用它时,它永远不会退出。请提出这段代码中的错误。

def display(val1, val2):

root = Tk()
clock = Label(root, font=('times', 20, 'bold'), bg='white')
clock.pack(fill=BOTH, expand=0)
def tick():
time1 = val1 +'\n' + val2
clock.config(text=time1)
tick()
root.after(3000,root.quit)
root.mainloop()

我在我的程序中调用上面的函数作为

thread.start_new_thread(display,(val1,val2))

线程适当启动,主程序继续,但显示功能在3秒后没有退出,请建议如何在不影响主程序的情况下加入此线程或销毁它

最佳答案

编辑:

在我的测试中,我认为您的实际问题出在 tkinter 上。你想要 Tk.destroy() 而不是 Tk.quit()

from tkinter import * # < Python3.x you will need Tkinter not tkinter.
from threading import Thread

def display(val1, val2):
root = Tk()
clock = Label(root, font=('times', 20, 'bold'), bg='white')
clock.pack(fill=BOTH, expand=0)
def tick():
time1 = val1 +'\n' + val2
clock.config(text=time1)
tick()
root.after(3000, root.destroy)
root.mainloop()

thread = Thread(target=display, args=("1", "2"))
thread.start()

这对我有用。

从之前:

你应该看看更高级别的threading模块。这是一个更好的选择。

加入主题:

from threading import Thread
...
thread = Thread(target=display, args=(val1, val2))
thread.start()
...
thread.join()

另一种方法是 multiprocessing模块。

from multiprocessing import Process
...
process = Process(target=display, args=(val1, val2))
process.start()
...
process.join()

threadingthread 不同,multiprocessing 提供Process.terminate() .

关于python - 在 start_new_thread 之后加入线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9239319/

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