Fix WeightsFileHandler add_callback is not multi-thread protected

This commit is contained in:
allegroai 2022-05-05 12:10:21 +03:00
parent 4ce0e4faf3
commit bc67a64d2a

View File

@ -179,7 +179,7 @@ class WeightsFileHandler(object):
model=None, upload_filename=None, local_model_path=local_model_path, model=None, upload_filename=None, local_model_path=local_model_path,
local_model_id=filepath, framework=framework, task=task) local_model_id=filepath, framework=framework, task=task)
# call pre model callback functions # call pre model callback functions
for cb in WeightsFileHandler._model_pre_callbacks.values(): for cb in list(WeightsFileHandler._model_pre_callbacks.values()):
# noinspection PyBroadException # noinspection PyBroadException
try: try:
model_info = cb(WeightsFileHandler.CallbackType.load, model_info) model_info = cb(WeightsFileHandler.CallbackType.load, model_info)
@ -252,7 +252,7 @@ class WeightsFileHandler(object):
model_info.model = trains_in_model model_info.model = trains_in_model
# call post model callback functions # call post model callback functions
for cb in WeightsFileHandler._model_post_callbacks.values(): for cb in list(WeightsFileHandler._model_post_callbacks.values()):
# noinspection PyBroadException # noinspection PyBroadException
try: try:
model_info = cb(WeightsFileHandler.CallbackType.load, model_info) model_info = cb(WeightsFileHandler.CallbackType.load, model_info)
@ -364,7 +364,7 @@ class WeightsFileHandler(object):
# call pre model callback functions # call pre model callback functions
model_info.upload_filename = target_filename model_info.upload_filename = target_filename
for cb in WeightsFileHandler._model_pre_callbacks.values(): for cb in list(WeightsFileHandler._model_pre_callbacks.values()):
# noinspection PyBroadException # noinspection PyBroadException
try: try:
model_info = cb(WeightsFileHandler.CallbackType.save, model_info) model_info = cb(WeightsFileHandler.CallbackType.save, model_info)
@ -424,7 +424,7 @@ class WeightsFileHandler(object):
model_info.model = trains_out_model model_info.model = trains_out_model
# call post model callback functions # call post model callback functions
for cb in WeightsFileHandler._model_post_callbacks.values(): for cb in list(WeightsFileHandler._model_post_callbacks.values()):
# noinspection PyBroadException # noinspection PyBroadException
try: try:
model_info = cb(WeightsFileHandler.CallbackType.save, model_info) model_info = cb(WeightsFileHandler.CallbackType.save, model_info)