import time import multiprocessing from multiprocessing import Manager def sum_range(start, end, result): total = 0 for i in range(start, end): total += i result.append(total) if __name__ == '__main__': start_time = time.time() manager = Manager() result = manager.list() t1 = multiprocessing.Process(target=sum_range,args=(1, 50000001, result)) t2 = multiprocessing.Process(target=sum_range, args=(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() result = [] sum_range(1,100000001,result) end_time = time.time() print("串行总和为:", result[0]) print("串行用时:", end_time - start_time, "秒")
时间: 2023-11-12 09:06:03 浏览: 94
多进程爬天气质量数据.zip_multiprocessing_python天气数据_spider_spider python_天
这是一个使用 Python 的 multiprocessing 模块实现并行计算的例子,其中定义了一个函数 sum_range(start, end, result),用于计算从 start 到 end 的整数之和,并将结果存储在 result 中。在主程序中,使用了 multiprocessing.Manager() 方法创建了一个共享内存的列表对象 result,然后启动了两个进程分别计算前半部分和后半部分的整数之和,并将结果存储在 result 中。最后,使用 sum() 函数计算并行计算的结果,并输出并行计算和串行计算的总和和用时。
需要注意的是,由于使用了共享内存对象,因此在多进程中对 result 的操作需要进行同步,否则可能会出现竞争条件和数据不一致的问题。在这个例子中,由于使用了 multiprocessing.Manager() 方法创建的共享内存对象,因此可以直接使用 append() 方法将计算结果添加到 result 中,而无需进行额外的同步操作。
阅读全文