wyhpylc 发表于 2023-2-17 21:50:12

Python多线程

我想实现执行某个模块后,开启一个线程,当执行指定时间后(或者完成了该线程的任务后结束线程)
用于改进 https://fishc.com.cn/thread-224262-1-1.html,请问这种多线程怎么实现

歌者文明清理员 发表于 2023-2-17 21:50:13

wyhpylc 发表于 2023-2-18 09:20
通过一个函数来运开启一个新线程(因为tk的按钮组件的 命令是执行一个函数)

from threading import Thread
from tkinter import *
def func():
    # 线程里要执行的东西。函数可以有参数,通过Thread的args参数向func传递参数。
    pass
root = Tk()
button = Button(root, text='别点')
# target目标函数,args参数
button['command'] = Thread(target=func, args=[]).start
button.pack()
root.mainloop()

歌者文明清理员 发表于 2023-2-17 22:08:14

就是说,你要开启一个线程,线程运行一会儿就退出?
那线程是重复运行吗

isdkz 发表于 2023-2-17 22:08:30

不太懂你的需求,线程完成任务后肯定会结束的,执行特定的时间就用 time.sleep 计时就行了,

你要在执行某个模块后开启,就在调用这个模块的后面启动线程不就好了

wyhpylc 发表于 2023-2-18 09:15:26

isdkz 发表于 2023-2-17 22:08
不太懂你的需求,线程完成任务后肯定会结束的,执行特定的时间就用 time.sleep 计时就行了,

你要在执行 ...

但是我想通过启动某个函数来启动线程,可以吗,我实测时是有些bug的,不知道是不是我的操作问题

wyhpylc 发表于 2023-2-18 09:20:37

歌者文明清理员 发表于 2023-2-17 22:08
就是说,你要开启一个线程,线程运行一会儿就退出?
那线程是重复运行吗

通过一个函数来运开启一个新线程(因为tk的按钮组件的 命令是执行一个函数)

wyhpylc 发表于 2023-2-18 10:59:02

本帖最后由 wyhpylc 于 2023-2-18 11:01 编辑

歌者文明清理员 发表于 2023-2-17 21:50


经过测试,我发现这样该线程任务执行完后,没法关闭,有没有办法结束一个线程from threading import Thread
from tkinter import *
def func():
    print(1)
root = Tk()
button = Button(root, text='别点')
# target目标函数,args参数
button['command'] = Thread(target=func, args=[]).start
button.pack()
root.mainloop()

这样输出一次后,再次点击,会报错(我想让他输出完后就结束)

歌者文明清理员 发表于 2023-2-18 11:05:13

wyhpylc 发表于 2023-2-18 10:59
经过测试,我发现这样该线程任务执行完后,没法关闭,有没有办法结束一个线程
这样输出一次后,再次点 ...

你为什么要线程关闭?
另外,如果报错,
def func2():
Thread(target=func, args=[]).start()
# 每次都创建一个Thread
button['command'] = func2

wyhpylc 发表于 2023-2-18 11:22:02

歌者文明清理员 发表于 2023-2-18 11:05
你为什么要线程关闭?
另外,如果报错,
def func2():


感谢!
页: [1]
查看完整版本: Python多线程