zhangyong пре 10 месеци
родитељ
комит
0598a639ac
1 измењених фајлова са 20 додато и 10 уклоњено
  1. 20 10
      video_rewriting/video_prep.py

+ 20 - 10
video_rewriting/video_prep.py

@@ -76,7 +76,6 @@ class getVideo:
         if len(task_data) == 0:
             Feishu.bot(mark, '机器自动改造消息通知', f'今日任务为空,请关注', name)
             return mark
-
         lock = threading.Lock()
         def process_task(task):
             task_mark = task["task_mark"]  # 任务标示
@@ -216,15 +215,26 @@ class getVideo:
                     cls.remove_files(video_path_url)
                     Common.logger("warning").warning(f"{name}的{task_mark}任务处理失败:{e}\n")
 
-        with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
-            futures = {executor.submit(process_task, task): task for task in task_data}
-            for future in concurrent.futures.as_completed(futures):
-                task = futures[future]
-                try:
-                    future.result()
-                    print(f"Task {task['task_mark']} 完成")
-                except Exception as exc:
-                    print(f"Task {task['task_mark']} 异常信息: {exc}")
+        batch_size = 3
+        with concurrent.futures.ThreadPoolExecutor(max_workers=batch_size) as executor:
+            index = 0
+            while index < len(task_data):
+                # 计算剩余的任务数量
+                remaining_tasks = len(task_data) - index
+                # 当前批次大小为剩余任务数量和批次大小中较小的一个
+                current_batch_size = min(batch_size, remaining_tasks)
+                # 获取当前批次的任务
+                current_batch = task_data[index:index + batch_size]
+                futures = {executor.submit(process_task, task): task for task in current_batch}
+                for future in concurrent.futures.as_completed(futures):
+                    task = futures[future]
+                    try:
+                        future.result()
+                        print(f"Task {task['task_mark']} 完成")
+                    except Exception as exc:
+                        print(f"Task {task['task_mark']} 异常信息: {exc}")
+                # 移动到下一批任务
+                index += current_batch_size
 
         Feishu.bot(mark, '机器自动改造消息通知', f'你的任务全部完成,请关注!!!!!', name)
         return mark