import os import concurrent.futures import time import threading from common import Material from video_rewriting.video_processor import VideoProcessor # 控制读写速度的参数 MAX_BPS = 120 * 1024 * 1024 # 120MB/s MAX_WORKERS = os.cpu_count() * 2 # 线程池最大工作线程数量 READ_WRITE_CHUNK_SIZE = 1024 * 1024 # 每次读写的块大小 (1MB) SLEEP_INTERVAL = READ_WRITE_CHUNK_SIZE / MAX_BPS # 控制每次读写的延迟时间 # 全局锁,用于同步读写操作 lock = threading.Lock() def video_task_start(data): """处理视频任务,返回用户名并根据结果决定延迟时间""" try: mark = VideoProcessor.main(data) print(f"返回用户名: {mark}") time.sleep(10 if mark else 120) # 根据 mark 是否为空设置延迟 return mark except Exception as e: print("处理任务时出现异常:", e) return None def controlled_io_operation(data): """同步控制IO操作并执行视频任务""" with lock: time.sleep(SLEEP_INTERVAL) return video_task_start(data) def video_start(): """启动视频生成任务""" print("开始执行生成视频脚本.") data = Material.feishu_list()[0] with concurrent.futures.ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor: futures = [executor.submit(controlled_io_operation, data) for _ in range(MAX_WORKERS)] for future in concurrent.futures.as_completed(futures): try: result = future.result() print(f"处理结果: 成功, 用户名: {result}") except Exception as e: print("处理任务时出现异常:", e) print("执行生成视频脚本结束.") while True: video_start()