import time from concurrent import futures def sum_range(start, end): total = 0 for i in range(start, end): total += i return total if __name__ == '__main__': start_time = time.time() with futures.ProcessPoolExecutor(2) as executor: task1 = executor.submit(sum_range,1,50000001) task2 = executor.submit(sum_range,50000001,100000001) result = [task1.result(), task2.result()] total = sum(result) end_time = time.time() print("并行总和为:", total) print("并行用时:", end_time - start_time, "秒") start_time = time.time() result = sum_range(1,100000001) end_time = time.time() print("串行总和为:", result) print("串行用时:", end_time - start_time, "秒")
时间: 2023-11-12 09:09:03 浏览: 65
Python并发concurrent.futures和asyncio实例
这是一个Python程序,用于演示并行计算和串行计算的效率比较。程序中定义了一个函数`sum_range`,它会计算从`start`到`end`的整数的总和。在主函数中,我们使用`concurrent.futures`模块中的`ProcessPoolExecutor`来创建一个进程池,然后使用`executor.submit`方法提交两个任务,每个任务计算一半的整数和。最后,我们等待两个任务完成,并将它们的结果相加得到最终的总和。同时我们也计算串行计算的结果和用时。
这个程序可以帮助我们比较并行计算和串行计算的效率,因为并行计算可以同时利用多个CPU核心来加速计算,从而提高计算速度。
阅读全文