首页 > 试题广场 >

执行以下程序,理论上输出的结果应最接近整数( )

[单选题]

执行以下程序,理论上输出的结果应最接近整数( )

from multiprocessing import Pool
import time

def task():
    for i in range(3):
        time.sleep(1)

if __name__ == '__main__':
    start = time.time()
    p = Pool(2)
    for i in range(5):
        p.apply_async(task)
    p.close()
    p.join()
    end = time.time()

    print(end-start)
  • 15
  • 3
  • 9
  • 12
p = Pool(2) 创建一个包含 2 个进程 的进程池对象 p,意味着最多同时有 2 个任务并行执行
由于进程池大小为 2,5 个任务会分批次执行:
第一批:任务 1 和任务 2 并行执行,耗时约 3 秒;
第二批:任务 3 和任务 4 并行执行,再耗时约 3 秒;
第三批:任务 5 单独执行,但由于还有空闲进程,仍可在 3 秒内完成。
但由于异步调度和系统开销,实际运行时间可能略大于 9 秒


发表于 2025-05-07 11:07:24 回复(0)
from multiprocessing import Pool  # 导入进程池模块
import time  # 导入时间模块

def task():  # 定义任务函数
    for i in range(3):  # 循环3次
        time.sleep(1)  # 每次睡眠1秒

if __name__ == '__main__':  # 主程序入口
    start = time.time()  # 记录开始时间
    
    p = Pool(2)  # 创建包含2个工作进程的进程池
    
    for i in range(5):  # 准备提交5个任务
        p.apply_async(task)  # 异步提交任务到进程池(非阻塞方式)
    
    p.close()  # 关闭进程池(停止接受新任务)
    p.join()  # 等待所有子进程执行完毕
    
    end = time.time()  # 记录结束时间
    print(end-start)  # 打印总耗时

    • 时间点0-3秒:Worker1执行任务1,Worker2执行任务2(并行)
      时间点3-6秒:Worker1执行任务3,Worker2执行任务4(并行)
      时间点6-9秒:Worker1执行任务5(最后一个任务)




编辑于 2025-08-16 16:26:14 回复(0)
没有看懂,有没有大佬解释下。。
发表于 2025-08-02 20:21:00 回复(0)