python-3.x - Python GUI with Multithreading - 如何管理线程

我是 Python 的新手。我一直在尝试开发一个基于 GUI 的工具来监控一组数据库。我想用多个线程提取数据以使数据库读取速度更快。我发现可以使用 threading 类或 concurrent.futures 类或使用 queue 来管理线程。在我的工具中,会有频繁的 DB 读取,并且 GUI 会相应地更新。我的问题是 - 使用线程的最佳选择是什么?以及如何管理线程的生命周期?

我尝试了不同网站提供的几个示例,结果如下。

  1. 使用 threading 类创建的线程很好地更新了 GUI。但我不知道如何管理 30 个线程。
  2. 使用 concurrent.futures.ThreadPoolExecutor 创建的线程由类管理。但它会在所有线程完成任务后更新 GUI。

回答1

python 线程的问题是,实际上没有一种正确的方法可以在不停止整个执行的情况下停止线程。我猜你使用 threading_thread

我要做的是创建一个列表并让每个函数访问列表的某个索引。

进程 ID = 列表中的项目。

线程 0 将检查列表中的项目 0 “正在运行”。

使用 _thread 的示例

import _thread
running = []
def task(id):
  global running
  while running[id]:
    #do something
#Create 5 tasks
for i in range(0,6):
  running.append(True)
  _thread.start_new_thread(task,(i,))
# Now lets stop tasks 2 and 4.
running[1] = False
running[3] = False
# After doing this the threads will end once code in while loop has finished
# To restart tasks 2 and 4
_thread.start_new_thread(task,(1,))
_thread.start_new_thread(task,(3,))

这是我管理任务的基本方法。

它可能适合你,也可能不适合你。

我不是专业人士。但它有效。

相似文章

随机推荐

最新文章