import time from multiprocessing import Process from multiprocessing import Manager def sum_range(start, end): total = 0 for i in range(start, end): total += i return total class MyProcess(Process): def __init__(self,st, end, result): self.st = st self.end = end self.result = result super().__init__() def run(self) -> None: total = 0 for i in range(self.st, self.end): total += i self.result.append(total) if __name__ == '__main__': start_time = time.time() manager = Manager() result = manager.list() t1 = MyProcess(1, 50000001,result) t2 = MyProcess(50000001,100000001,result) t1.start() t2.start() t1.join() t2.join() total = sum(result) end_time = time.time() print("并行总和为:", total) print("并行用时:", end_time - start_time, "秒") start_time = time.time() total = sum_range(1,100000001) end_time = time.time() print("串行总和为:", total) print("串行用时:", end_time - start_time, "秒")
时间: 2023-11-12 12:09:03 浏览: 72
多进程爬天气质量数据.zip_multiprocessing_python天气数据_spider_spider python_天
这段代码使用了 Python 的 multiprocessing 模块来实现并行计算一个范围内的整数和。它首先定义了一个 sum_range 函数,该函数接受两个参数 start 和 end,然后使用一个 for 循环计算这个范围内所有整数的和,并返回结果。然后它定义了一个名为 MyProcess 的子类,该类继承自 multiprocessing.Process 类,它重写了 run 方法来计算给定范围内的整数和,并将结果存储在一个共享列表中。在主函数中,它使用 multiprocessing.Manager 类来创建共享列表,然后启动两个 MyProcess 实例来并行计算整数和。最后,它计算并打印串行和并行计算的总和和用时。
阅读全文