2017-01-13 13 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 
... 

機能は、その実行の開始時に現在の作業ディレクトリを保存し、返す前にそれを復元しますが、これはスレッド安全のために十分ではありません。

関連する問題