串行和并行的执行时间比较代码
时间: 2023-10-18 07:04:19 浏览: 63
下面是一个简单的示例代码,用于比较串行和并行执行时间的差异:
```python
import time
import multiprocessing
# 定义一个计算函数,用于计算一个数的平方
def calculate_square(n):
time.sleep(1) # 模拟计算过程
return n ** 2
# 串行执行计算任务
def serial_execution():
start_time = time.time()
for i in range(10):
result = calculate_square(i)
print(f"Result {i}: {result}")
end_time = time.time()
print(f"Serial execution time: {end_time - start_time} seconds")
# 并行执行计算任务
def parallel_execution():
start_time = time.time()
with multiprocessing.Pool(processes=4) as pool:
results = [pool.apply_async(calculate_square, args=(i,)) for i in range(10)]
output = [p.get() for p in results]
for i, result in enumerate(output):
print(f"Result {i}: {result}")
end_time = time.time()
print(f"Parallel execution time: {end_time - start_time} seconds")
if __name__ == '__main__':
serial_execution()
parallel_execution()
```
在这个示例代码中,我们定义了一个 `calculate_square` 函数,用于计算一个数的平方。我们用一个 `for` 循环来计算 0 到 9 的整数的平方,然后比较串行和并行执行这个计算任务的时间。
在串行执行函数 `serial_execution` 中,我们按照顺序依次计算每个数的平方,因此总时间为 10 秒。
在并行执行函数 `parallel_execution` 中,我们使用了 `multiprocessing.Pool` 来创建一个进程池,其中 `processes=4` 指定了进程池的大小为 4。我们使用 `apply_async` 方法将每个数的平方计算任务提交到进程池中,然后使用 `get` 方法获取任务结果。因为我们使用了 4 个进程来并行执行任务,因此总时间只需要 3 秒左右。
通过比较串行和并行执行的时间,我们可以看到并行执行可以大大提高任务的执行效率。