2017-01-13 6 views
1

Я пытаюсь закрепить несколько папок, используя shutil.make_archive, используя потоки в python. Я вижу, что небольшая папка полностью застегивается, и в то же время другая нить также останавливается.Является ли shutil.make_archive потоком безопасным?

Итак, является ли сообщение shutil.make_archive безопасным?

ответ

0

shutil.make_archive()не нить безопасный.

Причина в том, что он изменяет текущий рабочий каталог, который является глобальным для процесса. Темы не имеют собственного рабочего каталога. См соответствующий код в Python 2.7:

save_cwd = os.getcwd() 
if root_dir is not None: 
    if logger is not None: 
     logger.debug("changing into '%s'", root_dir) 
    base_name = os.path.abspath(base_name) 
    if not dry_run: 
     os.chdir(root_dir) 

if base_dir is None: 
    base_dir = os.curdir 
... 

Функция сохраняет текущую рабочую директорию в начале ее выполнения и восстанавливает его, прежде чем вернуться, но этого не достаточно для безопасности потоков.

Смежные вопросы