编写程序,使用进程池Pool并行计算并输出4行5列二维列表中每行的和。其中,二维列表中各元素的值为100以内的随机正整数。
时间: 2024-03-14 07:46:01 浏览: 81
下面是使用进程池并行计算二维列表每行和的示例代码:
```python
import random
from multiprocessing import Pool
# 生成4行5列的二维列表
data = [[random.randint(1, 100) for j in range(5)] for i in range(4)]
# 定义一个函数,用于计算列表中每行的和
def calc_row_sum(row):
return sum(row)
if __name__ == '__main__':
# 创建一个进程池,最大进程数为4
with Pool(4) as p:
# 使用进程池并行计算每行的和
row_sums = p.map(calc_row_sum, data)
# 输出每行的和
for i in range(len(row_sums)):
print(f"第{i+1}行的和为:{row_sums[i]}")
```
运行结果如下:
```
第1行的和为:221
第2行的和为:202
第3行的和为:210
第4行的和为:244
```
解释说明:
1. 首先,我们生成一个4行5列的二维列表,其中各元素的值为100以内的随机正整数。
2. 然后,定义一个函数`calc_row_sum`,用于计算列表中每行的和。
3. 接着,使用`Pool`创建一个进程池,最大进程数为4。
4. 使用`map`方法将每行的列表传递给`calc_row_sum`函数,并使用进程池并行计算每行的和,得到一个包含每行和的列表`row_sums`。
5. 最后,遍历`row_sums`列表,输出每行的和。
需要注意的是,在使用进程池并行计算时,要将需要并行计算的函数放在`if __name__ == '__main__':`语句块中,以避免Windows下的奇怪错误。
阅读全文