shutil.rmtree - рекомендуемый способ удаления каталогов в python. Просто интересно, это потокобезопасно? Если нет, есть ли пример, как сделать удаление каталогов потокобезопасным?
class DeleteResource:
def remove_single_folder(self, dir_to_remove):
"""
:param dir_to_remove: directory to be removed
"""
try:
logger.info("Dir to remove " + dir_to_remove)
shutil.rmtree(dir_to_remove)
except OSError as error_details:
logger.error("Removing of directory " + dir_to_remove +
" failed: " + str(error_details))
raise
logger.info("Dir " + dir_to_remove + " was removed")
def remove_all_folder_with_prefix(self, prefix):
"""
remove all contents of directory based on prefix
:param prefix:
:return: number of single folders being removed
"""
num_files_removed = 0
dir_list = glob.glob(prefix + "*")
try:
for dir in dir_list:
remove_single_folder(dir)
num_files_removed += 1
except OSError:
raise
return num_files_removed
Когда используется вышеуказанный класс, он будет выглядеть как
prefix = '/opt/recorded/'
delete_resource = DeleteResource()
delete_resource.remove_all_folder_with_prefix(prefix)
Так что мне нужно обернуть класс таким образом, чтобы для приведенного выше варианта использования он был безопасен для потоков.