python - 如何在python中停止continuous_threading
问题描述
我正在做一个项目,我必须从串口读取值并将它们显示在 tkinter GUI 上。我正在使用python的连续线程模块。我正在使用一个连续线程在每 0.5 秒后连续读取串行端口上的数据,但现在我想停止这个连续线程。那么我应该如何阻止它呢?
这是按下检查按钮时我正在调用的函数
def scan():
print("in scan")
btn1_state = var1.get()
print("Scan: %d"%btn1_state)
t1 = continuous_threading.PeriodicThread(0.5, readserial)
if(btn1_state == 1):
t1.start()
else:
print("entered else ")
t1.stop() #I am using stop() but the thread doesn't stop
请帮忙
解决方案
问题很可能是您在函数中使用了阻塞读取readserial
函数。它需要超时。我可以用这段代码重现:
import time
import continuous_threading
time_list = []
def save_time():
while True:
time.sleep(1)
time_list.append(time.time())
th = continuous_threading.PeriodicThread(0.5, save_time)
th.start()
time.sleep(4)
th.join()
print(time_list)
这永远不会退出。
从例子修改。
由于 Continuous_threading 期望它的事件循环处于控制之中,所以它永远不会到达停止事件。
推荐阅读
- node.js - Nodejs中的终端CLi无缘无故关闭
- r - 有多少比例的数据点与平均值相差一个标准差?
- docker - 临时卷在 Kubernetes 中的用途是什么?
- xamarin - Xamarin.Forms.CollectionView 显示的大小与我在 ItemsLayout 为 GridItemsLayout 时设置的大小不同
- php - 自动将 target="_blank" 添加到 joomla 组件中的所有外部链接
- r - 如果我们知道 x2=rho*x1,x1~N(0.127,0.053), x2~N(0.106,0.09),如何通过 R 代码估计 cov(x1,x2)
- database - 数据库连接池数和Web应用程序用户数有什么关系?
- python-3.x - 时间不能在过去的条件Python中设置
- docker - 在 Docker 容器中将 TFS 代理作为服务运行
- svg - 如何绘制没有箭头的向量