首页 > 解决方案 > Python 没有在生成的进程上清理 TemporaryDirectory

问题描述

我在 Python 中产生了多个进程。每个进程都会创建一个临时目录。但是,当我ctrl + c执行程序时,临时目录仍然存在。

更多详情:

我产生了多个进程来运行my_func(),传入temp_dir_path

pool = multiprocessing.Pool(processes=1)

for file_name in os.listdir(input_folder):
    
    full_file_path = os.path.join(input_folder, file_name)
    
    pool.apply_async(
        my_func,args=(full_file_path, temp_dir_path,),
    )

pool.close()
pool.join()

my_func()aTemporaryDirectory内创建在 内temp_dir_path。这个临时目录被传递给在目录中生成文件的 C++ 函数。C++ 函数返回正常,没有异常。

def my_func(full_file_path: str, temp_dir_path: str,) -> None:

    with tempfile.TemporaryDirectory(dir=temp_dir_path) as temp_output_path:
        
        if some_cpp_func_generating_files(full_file_path, temp_output_path):
            print("All good")

但是,当我按 ctrl + C 时,temp_dir_path. 这甚至发生在我一次只生成 1 个进程时。

我想到了这条线:

with tempfile.TemporaryDirectory(dir=temp_dir_path) as temp_output_path:

保证TemporaryDirectory会被删除?

为什么这不清理临时目录?

标签: python

解决方案


推荐阅读