鱼C论坛

 找回密码
 立即注册
查看: 3593|回复: 8

[已解决]Python多线程

[复制链接]
发表于 2023-2-17 21:50:12 | 显示全部楼层 |阅读模式
20鱼币
我想实现执行某个模块后,开启一个线程,当执行指定时间后(或者完成了该线程的任务后结束线程)
用于改进 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-17 22:08:14 | 显示全部楼层
就是说,你要开启一个线程,线程运行一会儿就退出?
那线程是重复运行吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

你要在执行某个模块后开启,就在调用这个模块的后面启动线程不就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-2-18 09:15:26 | 显示全部楼层
isdkz 发表于 2023-2-17 22:08
不太懂你的需求,线程完成任务后肯定会结束的,执行特定的时间就用 time.sleep 计时就行了,

你要在执行 ...

但是我想通过启动某个函数来启动线程,可以吗,我实测时是有些bug的,不知道是不是我的操作问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-2-18 09:20:37 | 显示全部楼层
歌者文明清理员 发表于 2023-2-17 22:08
就是说,你要开启一个线程,线程运行一会儿就退出?
那线程是重复运行吗

通过一个函数来运开启一个新线程(因为tk的按钮组件的 命令是执行一个函数)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-2-18 10:59:02 | 显示全部楼层
本帖最后由 wyhpylc 于 2023-2-18 11:01 编辑


经过测试,我发现这样该线程任务执行完后,没法关闭,有没有办法结束一个线程
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()
这样输出一次后,再次点击,会报错(我想让他输出完后就结束)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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


你为什么要线程关闭?
另外,如果报错,
def func2():
  Thread(target=func, args=[]).start()
# 每次都创建一个Thread
button['command'] = func2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-2-18 11:22:02 | 显示全部楼层
歌者文明清理员 发表于 2023-2-18 11:05
你为什么要线程关闭?
另外,如果报错,
def func2():

感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 17:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表