Потокобезопасный удаление каталогов в Python - PullRequest
0 голосов
/ 19 июня 2019

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)

Так что мне нужно обернуть класс таким образом, чтобы для приведенного выше варианта использования он был безопасен для потоков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...