python - 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
会被删除?
为什么这不清理临时目录?
解决方案
推荐阅读
- json - 在golang中解组json
- ruby-on-rails - 测试运动鞋和 Rabbitmq 的 RSpec
- apache-spark-sql - AWS SageMaker Spark SQL
- r - 汇总重叠时间段的值
- php - 谷歌支付可以集成为外部支付方式吗?
- javascript - .focus() 在未通过单击激活时在 chrome mobile 上不起作用。解决方法?
- jquery - 使用jquery从foreach计算每一行表
- python - 如何修复属性错误 bool 对象在 python 中没有属性选择
- python - 有效地在字典列表中查找值
- java - 未填充 ListView。ViewPager 和片段的问题