问题
python多进程启动4个任务,当前共20个任务,如何刻画当前进度?
解决方案
在 Python 中使用多进程处理多个任务并刻画当前进度,你可以使用 multiprocessing
模块和一个共享变量(如 multiprocessing.Value
或 multiprocessing.Manager().Value
)来跟踪任务进度。以下是一个示例代码,展示了如何启动 4 个进程来处理 20 个任务,并实时显示进度。
示例代码
import multiprocessing
import time
import randomdef worker(task_queue, progress, total_tasks):while not task_queue.empty():try:task = task_queue.get_nowait()except multiprocessing.queues.Empty:break# 模拟任务处理time.sleep(random.uniform(0.1, 0.5))with progress.get_lock():progress.value += 1print(f"Progress: {progress.value}/{total_tasks} ({progress.value/total_tasks*100:.2f}%)")if __name__ == '__main__':total_tasks = 20num_workers = 4# 创建一个任务队列task_queue = multiprocessing.Queue()for i in range(total_tasks):task_queue.put(i)# 创建一个共享变量来跟踪进度progress = multiprocessing.Value('i', 0)# 启动工作进程processes = []for _ in range(num_workers):p = multiprocessing.Process(target=worker, args=(task_queue, progress, total_tasks))p.start()processes.append(p)# 等待所有工作进程完成for p in processes:p.join()print("All tasks completed.")