MST

星途 面试题库

面试题:Python多线程负载均衡实现考查

假设你有一个任务列表,每个任务的执行时间不同,现在要用Python多线程实现负载均衡,让线程池中的线程尽可能均匀地分配这些任务。请写出主要实现代码,并简要说明设计思路。
15.1万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

设计思路

  1. 首先,将任务列表按照执行时间排序。
  2. 然后,采用类似“轮流分配”的策略,把任务依次分配给线程池中的线程,以达到负载均衡的效果。

主要实现代码

import concurrent.futures
import time


def task(t):
    time.sleep(t)
    return t


def main():
    task_list = [5, 2, 3, 4, 1]
    task_list.sort()
    with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
        results = list(executor.map(task, task_list))
    print(results)


if __name__ == "__main__":
    main()

在上述代码中:

  1. task 函数模拟了一个任务,其执行时间为传入的参数 t
  2. main 函数中,首先定义了任务列表 task_list 并对其进行排序。
  3. 使用 concurrent.futures.ThreadPoolExecutor 创建一个线程池,最大线程数为3。
  4. 使用 executor.map 方法将任务分配给线程池中的线程执行,并获取结果。