python多进程负载均衡
下面是一个简单的 Python 多进程负载均衡的例子,使用了 multiprocessing
和 queue
模块:
import multiprocessing
import random
import time
# 需要执行的任务函数
def task(queue, worker_id):
while True:
item = queue.get()
if item is None:
print(f"Worker {worker_id} exiting")
break
print(f"Worker {worker_id} processing item {item}")
time.sleep(random.uniform(0.5, 1.5))
if __name__ == '__main__':
# 任务队列
task_queue = multiprocessing.Queue()
# 添加一些任务到队列
for i in range(20):
task_queue.put(i)
# 创建多个进程执行任务
num_workers = multiprocessing.cpu_count()
workers = []
for i in range(num_workers):
worker = multiprocessing.Process(target=task, args=(task_queue, i))
worker.start()
workers.append(worker)
# 等待所有进程执行完毕
for worker in workers:
worker.join()
print("All tasks completed")
这个例子中,我们首先定义了一个任务函数 task
,它从任务队列中获取任务并执行。然后,在 if __name__ == '__main__'
的条件下,我们创建了一个 multiprocessing.Queue
对象,将一些任务添加到队列中,并创建了多个进程,每个进程都执行 task
函数。最后,我们等待所有进程执行完毕,并输出一个完成的消息。
在这个例子中,所有的进程都从同一个任务队列中获取任务,这就实现了简单的负载均衡。当一个进程完成一个任务后,它会自动从队列中获取下一个任务,直到所有任务都完成为止。