2017-01-13 6 views
1

나는 파이썬에서 스레드를 사용하여 shutil.make_archive를 사용하여 여러 폴더를 압축하려고합니다. 작은 폴더가 완전히 지퍼로 고정되고 동시에 다른 스레드도 지퍼 링을 멈추는 것을 볼 수 있습니다.shutil.make_archive는 thread로부터 안전한가요?

그럼, threadil.make_archive thread safe입니까?

답변

0

shutil.make_archive()이 아니고 스레드 안전합니다.

왜냐하면 프로세스의 전역 작업 디렉토리를 변경하기 때문입니다. 스레드는 자신의 작업 디렉토리를 가지고 있지 않습니다. 파이썬 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 
... 

기능은 실행의 시작 부분에 현재 작업 디렉토리를 저장하고 반환하기 전에 복원, 그러나 이것은 스레드 안전을 위해 충분하지 않습니다.