You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

服务器负载突增排查编程题求助:进程日志分析代码修正

问题描述

某服务器在时刻t的指标显示负载突增,需查看进程状态日志找出导致负载上升的进程。服务器存在A至H共8个进程,每个进程有created、waiting、running、terminated四种状态,日志开始记录时所有进程均处于terminated状态,日志包含了截至时刻t的所有进程状态变更记录。

要求:

  • 若时刻t仅存在一个处于running状态的进程,输出该进程名称;
  • 若没有进程处于running状态或存在多个running状态的进程,则输出-1。

示例:
输入:

15,
["0 A created",
"1 B created",
"10 A running",
"12 B waiting",
"13 B running",
"14 A waiting",
"17 B terminated",
"18 A terminated"]

输出:"B"

我的代码
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(t, logs):
    new_logs = [item.split(' ') for item in logs ]
    temp = []
    final = []
    for item in new_logs:
        if item[2] == "running" and int(item[0]) <= t:
            temp.append(item[1])
        if item[2] == 'terminated' and item[1] in temp and int(item[0])> t:
            temp.remove(item[1])
            final.append(item[1])
    print(temp, final)
    if len(final) >= 2:
        return '-1'
    elif len(final) == 1:
        return str(final[0])
    else:
        return '-1'
问题分析与修正

原代码逻辑存在漏洞:只处理了running和terminated状态,忽略了waiting状态会让进程退出running状态的情况;同时temp和final的使用逻辑混乱,无法准确跟踪进程在t时刻的真实状态。

正确的思路应该是跟踪每个进程在t时刻的最终状态——因为日志是截至t的所有变更记录,所以进程最后一次时间<=t的状态变更,就是它在t时刻的状态。

修正后的代码
def solution(t, logs):
    # 初始化所有A-H进程的初始状态为terminated
    process_states = {chr(ord('A') + i): 'terminated' for i in range(8)}
    
    # 遍历日志,更新进程截至t时刻的状态
    for log in logs:
        time_str, proc, state = log.split(' ')
        time = int(time_str)
        if time > t:
            continue
        process_states[proc] = state
    
    # 统计当前处于running状态的进程
    running_procs = [proc for proc, state in process_states.items() if state == 'running']
    
    # 根据规则返回结果
    if len(running_procs) == 1:
        return running_procs[0]
    else:
        return '-1'
代码说明
  1. 初始化所有进程状态为terminated,符合题目中日志开始前的状态设定;
  2. 遍历日志时只处理时间<=t的记录,用最新的状态覆盖进程之前的状态,确保得到的是t时刻的真实状态;
  3. 统计所有running状态的进程,根据数量直接返回对应结果,逻辑清晰且覆盖所有边界情况。

内容的提问来源于stack exchange,提问作者Serge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:32:09