oop_and_ml/grade.py

30 lines
1.3 KiB
Python
Executable file

import traceback
import multiprocessing
def grade_all(name, begin, end, funcs):
grade = 0
for q in range(begin, end):
def func():
exit(0 if funcs["grade_Q%d" % q]() else 1)
try:
p = multiprocessing.Process(target = func)
p.start()
p.join(300)
if p.is_alive():
p.terminate()
print("============Q%d timeout!============\n" % q, flush = True)
elif p.exitcode == 0:
print("============Q%d passed!============\n" % q, flush = True)
grade += 1
else:
print("============Q%d failed!============\n" % q, flush = True)
except Exception as e:
print("============Q%d failed!============" % q, flush = True)
print(traceback.format_exc())
print("Grading result: %d functions passed" % grade)
print("*************************************************************")
print("* You may receive 0 points unless your code tests correctly *")
print("* Please commit and push your code at least daily. *")
print("* DO NOT CHANGE any grade_px.py for grading *")
print("*************************************************************")