困难
技术面试0 次浏览

编写 Python 代码实现一个简单的分布式数据处理系统,使用多进程或多线程。

数据分析师
Python分布式数据处理多进程多线程

答题要点

以下是一个使用 Python 的多进程实现简单分布式数据处理系统的示例。假设我们要对一个大列表进行分割,然后让多个进程并行处理每个子列表。 python import multiprocessing def process_chunk(chunk): result = [] for item in chunk: # 这里可以进行具体的数据处理操作,例如对每个元素进行平方运算 result.append(item ** 2) return result def distributed_processing(data, num_processes): chunk_size = len(data) // num_processes chunks = [data[i:i + chunk_size] for i in range(0, len(data), chunk_size)] pool = multiprocessing.Pool(processes=num_processes) results = pool.map(process_chunk, chunks) pool.close() pool.join() final_result = [] for sub_result in results: final_result.extend(sub_result) return final_result if __name__ == '__main__': data = list(range(100)) num_processes = 4 result = distributed_processing(data, num_processes) print(result) 在上述代码中,`process_chunk` 函数用于处理每个子列表。`distributed_processing` 函数将数据分割成多个子列表,使用 `multiprocessing.Pool` 创建进程池,将每个子列表分配给不同的进程进行处理。最后,将各个进程的处理结果合并并返回。如果要使用多线程实现,可以将 `multiprocessing` 替换为 `threading`,并相应调整代码。需要注意的是,多进程适用于 CPU 密集型任务,而多线程适用于 I/O 密集型任务。