链表的应用:计算每个作业的运行时间

来源:互联网 发布:python arma模型 编辑:程序博客网 时间:2024/05/01 01:57


问题描述

在一个网络计算系统中,有很多台计算机。每台计算机分别作为一个资源,用一个由‘0’~‘9’的数字组成的字符串表示。当要计算一个任务时,网络计算系统自动从空闲的计算机中找一台,并在这台计算机上完成计算任务。每个计算任务用一个以小写字母打头、并包含有下划线字符‘_’的唯一的字符串表示。

网络计算系统用一个运行日志文件记录了所发生的每个“事件”。日志文件是文本文件,每个事件占用其中的一行。共有三类“事件”:

l         计算机启动。日志中记录了事件发生的时间、网络系统为该计算机分配的资源号。例如下列日志记录表示:一台标号为“1249630811312610”的计算机在2006年11月21日11点55分56秒时启动了。

2006-11-21 11:55:56 resource created: 1249630811312610

l         计算任务开始。日志中记录了事件发生的时间、计算任务的标号、是在哪台计算机上执行的。例如下列日志记录表示:一个标号为“mm_1080_p”的计算任务被分配到“1283135310662341”标识的计算机上执行,开始执行的时间是2006年11月21日11点57分57秒。

2006-11-21 11:57:17 mm_1080_p started on resource 1283135310662341

l         计算任务结束。日志中记录了事件发生的时间、计算任务的标号、是在哪台计算机上执行的。例如下列日志记录表示:一个标号为“mm_1069_p”的计算任务在2006年11月21日12点1分58秒时运行结束,它是在“1283135310662341” 标识的计算机上完成的。

2006-11-21 12:1:58 mm_1069_p finished on resource 1318717414378778

预先不知道这些计算机的启动时间,而且各计算机的启动时间也不相同。一些计算机已经开始计算了、甚至已经完成了一些计算任务,另一些计算机才启动。每台计算机只有在启动之后,才开始执行计算任务。在日志文件中,每个事件占一行,并按照事件发生的时间顺序排列。

请编写一个日志分析程序,统计在每台计算机上完成的计算任务,并计算各计算任务开始运行的时间、消耗的时间。将结果存储在另一个文本文件中,具体格式是:

l         每个资源占文本的一段,第一行是资源的标号,然后是在该资源上完成的各个计算任务的统计信息。启动时间早的计算机,所在的段排在文本的前面

l         每个计算任务的统计信息占一行,记录计算任务执行的时间、消耗的时间、计算任务的标号。

l         同一段中的计算任务,按照它们开始执行时间的顺序排列。

l         段与段之间用一个空行隔开。