| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #!/usr/bin/env python
- # coding: utf-8
- import re, sys, os, json
- from PIL import Image, ImageDraw, ImageFont
- # Acciones validas
- CMDS = ['LOAD', 'CPU', 'BLOCK', 'UNBLOCK', 'EXIT', 'DEADLINE']
- def parseData(fin):
- ln = 0
- lastBlock = 0
- result = []
- for l in fin:
- ln+=1
- vls = l.split()
- # Si no es un comando valido
- if (vls[0] not in CMDS):
- # sys.stderr.write('Warning: Ignoring line %d: %s' % (ln, l))
- continue
- # Parseo los datos estos
- accion = vls[0]
- tick = int(vls[1])
- proceso = int(vls[2])
- # Ignoro a idle
- if proceso == -1:
- continue
-
- # Empiezo a contar cuando carga un proceso
- if accion == 'LOAD':
- # result[i] = Proceso
- result.append({'cargaTick': tick, 'primerTick': 0, 'ultimoTick': 0, 'ticksCpu': 0, 'ticksBlock': 0 })
- # Tick CPU
- if accion == 'CPU':
- if result[proceso]['ticksCpu'] == 0:
- result[proceso]['primerTick'] = tick
- # Si no hubo un block en el mismo tick
- if lastBlock != tick:
- result[proceso]['ticksCpu'] +=1
-
- # Tick Block
- if accion == 'BLOCK':
- lastBlock = tick
- result[proceso]['ticksBlock'] += 1
- if accion == 'UNBLOCK':
- if lastBlock == tick:
- lastBlock -= 1
- result[proceso]['ticksBlock'] -= 1
- if accion == 'EXIT':
- result[proceso]['ultimoTick'] = tick
- return result
- def main(argv):
- if len(argv) <= 1:
- fin = sys.stdin
- else:
- return 1
- data = parseData(fin)
- print(json.dumps(data))
- return 0
- if __name__ == "__main__":
- main(sys.argv)
|