mirror of
https://github.com/QingdaoU/JudgeServer.git
synced 2025-11-04 14:50:01 +08:00
fix: 资源泄漏
This commit is contained in:
parent
205ae66a45
commit
a58c3dbe6c
@ -32,7 +32,6 @@ class JudgeClient(object):
|
|||||||
self._test_case_dir = test_case_dir
|
self._test_case_dir = test_case_dir
|
||||||
self._submission_dir = submission_dir
|
self._submission_dir = submission_dir
|
||||||
|
|
||||||
self._pool = Pool(processes=psutil.cpu_count())
|
|
||||||
self._test_case_info = self._load_test_case_info()
|
self._test_case_info = self._load_test_case_info()
|
||||||
|
|
||||||
self._spj_version = spj_version
|
self._spj_version = spj_version
|
||||||
@ -46,6 +45,8 @@ class JudgeClient(object):
|
|||||||
if not os.path.exists(self._spj_exe):
|
if not os.path.exists(self._spj_exe):
|
||||||
raise JudgeClientError("spj exe not found")
|
raise JudgeClientError("spj exe not found")
|
||||||
|
|
||||||
|
self._pool = Pool(processes=psutil.cpu_count())
|
||||||
|
|
||||||
def _load_test_case_info(self):
|
def _load_test_case_info(self):
|
||||||
try:
|
try:
|
||||||
with open(os.path.join(self._test_case_dir, "info")) as f:
|
with open(os.path.join(self._test_case_dir, "info")) as f:
|
||||||
@ -179,10 +180,14 @@ class JudgeClient(object):
|
|||||||
def run(self):
|
def run(self):
|
||||||
tmp_result = []
|
tmp_result = []
|
||||||
result = []
|
result = []
|
||||||
for test_case_file_id, _ in self._test_case_info["test_cases"].items():
|
try:
|
||||||
tmp_result.append(self._pool.apply_async(_run, (self, test_case_file_id)))
|
for test_case_file_id, _ in self._test_case_info["test_cases"].items():
|
||||||
self._pool.close()
|
tmp_result.append(self._pool.apply_async(_run, (self, test_case_file_id)))
|
||||||
self._pool.join()
|
except Exception as e:
|
||||||
|
raise e
|
||||||
|
finally:
|
||||||
|
self._pool.close()
|
||||||
|
self._pool.join()
|
||||||
for item in tmp_result:
|
for item in tmp_result:
|
||||||
# exception will be raised, when get() is called
|
# exception will be raised, when get() is called
|
||||||
# # http://stackoverflow.com/questions/22094852/how-to-catch-exceptions-in-workers-in-multiprocessing
|
# # http://stackoverflow.com/questions/22094852/how-to-catch-exceptions-in-workers-in-multiprocessing
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user