需求是这样的。
gui 对象中有个 tableList 数组,数组中有个对象 执行 线程 run 任务。
gui 定时了一个任务 每 1 分钟去刷 数组对象 的 run 任务
刷久了 一晚上 起来看不到程序了。 头疼死了。
# 定时任务
def timer_task(self):
# 定时任务的具体逻辑
print("定时任务执行中...")
# 使用线程池并发执行
# with concurrent.futures.ThreadPoolExecutor(max_workers=50) as executor:
# futures = [executor.submit(instance.start) for instance in self.tableList]
# # 等待所有线程完成
# for future in concurrent.futures.as_completed(futures):
# future.result()
with concurrent.futures.ThreadPoolExecutor(max_workers=20) as executor: # 调整线程池大小
futures = []
for instance in self.tableList:
if not self.task_queue.full(): # 检查队列是否已满
self.task_queue.put(instance)
future = executor.submit(self.safe_start, instance)
futures.append(future)
# 等待所有线程完成
for future in concurrent.futures.as_completed(futures):
future.result()
self.task_queue.get() # 任务完成后从队列中移除
# 执行任务
def safe_start(self, instance):
with self.lock: # 使用线程锁保护共享资源
try:
instance.start()
except Exception as e:
print(f"任务执行失败: {e}")
有木有大佬能帮忙看看的!
gui 对象中有个 tableList 数组,数组中有个对象 执行 线程 run 任务。
gui 定时了一个任务 每 1 分钟去刷 数组对象 的 run 任务
刷久了 一晚上 起来看不到程序了。 头疼死了。
# 定时任务
def timer_task(self):
# 定时任务的具体逻辑
print("定时任务执行中...")
# 使用线程池并发执行
# with concurrent.futures.ThreadPoolExecutor(max_workers=50) as executor:
# futures = [executor.submit(instance.start) for instance in self.tableList]
# # 等待所有线程完成
# for future in concurrent.futures.as_completed(futures):
# future.result()
with concurrent.futures.ThreadPoolExecutor(max_workers=20) as executor: # 调整线程池大小
futures = []
for instance in self.tableList:
if not self.task_queue.full(): # 检查队列是否已满
self.task_queue.put(instance)
future = executor.submit(self.safe_start, instance)
futures.append(future)
# 等待所有线程完成
for future in concurrent.futures.as_completed(futures):
future.result()
self.task_queue.get() # 任务完成后从队列中移除
# 执行任务
def safe_start(self, instance):
with self.lock: # 使用线程锁保护共享资源
try:
instance.start()
except Exception as e:
print(f"任务执行失败: {e}")
有木有大佬能帮忙看看的!
