comparison upreckon/win32.py @ 251:d3a5d1929ad2

Wall-clock time limit is now enforced before handling CPU times on Win32 too
author Oleg Oshmyan <chortos@inbox.lv>
date Sun, 19 Jan 2014 01:21:22 +0000
parents acd70a60bc17
children
comparison
equal deleted inserted replaced
250:acd70a60bc17 251:d3a5d1929ad2
535 case.time_stopped = clock() 535 case.time_stopped = clock()
536 if GetProcessTimes: 536 if GetProcessTimes:
537 try: 537 try:
538 times = GetProcessTimes(case.process._handle) 538 times = GetProcessTimes(case.process._handle)
539 except WindowsError: 539 except WindowsError:
540 pass 540 times = None
541 else: 541 else:
542 if case.maxcputime or not case.maxwalltime: 542 case.time_stopped = times.exit
543 cputime = times.kernel + times.user 543 case.time_started = times.creation
544 case.time_stopped = cputime 544 if (case.maxwalltime and
545 case.time_started = 0 545 case.time_stopped - case.time_started > case.maxwalltime):
546 case.time_limit_string = case.cpu_time_limit_string 546 raise WallTimeLimitExceeded
547 if case.maxcputime and cputime > case.maxcputime: 547 if times and (case.maxcputime or not case.maxwalltime):
548 raise CPUTimeLimitExceeded 548 cputime = times.kernel + times.user
549 else: 549 case.time_stopped = cputime
550 case.time_stopped = times.exit 550 case.time_started = 0
551 case.time_started = times.creation 551 case.time_limit_string = case.cpu_time_limit_string
552 walltime = times.exit - times.creation 552 if case.maxcputime and cputime > case.maxcputime:
553 if case.maxwalltime and walltime > case.maxwalltime: 553 raise CPUTimeLimitExceeded
554 raise WallTimeLimitExceeded
555 if case.maxcputime and case.process.returncode == 1816: 554 if case.maxcputime and case.process.returncode == 1816:
556 raise CPUTimeLimitExceeded 555 raise CPUTimeLimitExceeded
557 if case.maxmemory and GetProcessMemoryInfo: 556 if case.maxmemory and GetProcessMemoryInfo:
558 try: 557 try:
559 counters = GetProcessMemoryInfo(case.process._handle) 558 counters = GetProcessMemoryInfo(case.process._handle)