python - 提高挂载目录的 IO 性能?

标签 python linux multithreading bash multiprocessing

<分区>

我正在尝试优化一个 Python 测试,该测试涉及使用 SSH 和一个简单的 Bash 命令将大约 10 万个文件写入挂载目录。

我在这方面相当缺乏经验,所以我需要一些关于如何最小化 IO 时间的建议。

基本上,Python 脚本会在远程服务器上挂载一个目录(我们称它为 %MOUNTED_DIRECTORY%),然后通过 SSH 连接到远程主机并在该主机上调用以下 bash 命令:

for number in `seq 1 100000`; do touch %MOUNTED_DIRECTORY%/test_file$number; done

我发现很多时间花在这个过程上,等待文件的创建完成。我需要在继续之前创建文件,所以在此期间我不能做任何事情 - 我必须加快这个过程。

此外,当目录被挂载时,它比没有挂载时需要更多的时间来完成,所以这就是我首先遇到这个问题的原因。

我考虑过多线程或多处理,但它们似乎效率不高,要么是因为我做错了什么,要么是因为该命令实际上在远程主机上并且是使用 Bash 而不是 Python 创建文件?

最佳答案

使用 xargs:

seq 1 100000 | sed 's|^|%MOUNTED_DIRECTORY%/test_file|' | xargs touch

这会将尽可能多的名称传递给每个触摸命令。

关于python - 提高挂载目录的 IO 性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56819317/

相关文章:

c++ - 以成员函数启动线程(带继承)

python - 如何使用 PYTHON 遍历目录中的文件并将 INFO 插入 MySQL 数据库

python - SQLalchemy核心,从元组而不是字典插入多行

python - 如何将属性添加到 Django 表单小部件的媒体字段?

python - 使用scp批量传输文件

linux - 如何知道在 Cronjob 中工作的时间?

c++ - Qt4.8中使用C创建新线程

Java jar在ubuntu上创建多个进程但在mac上不创建

ios - 替换多线程核心数据中的数据

python - distutils索引错误: tuple index out of range