Я использовал код ниже, чтобы смолить папку около 1G.Для завершения требуется 30 с
import tarfile
import tempfile
# tar the folder
tmp_path = 'my_folder'
f_temp = tempfile.NamedTemporaryFile()
src_fname = f_temp.name
with tarfile.open(src_fname, "w") as tar:
tar.add(tmp_path, arcname='.')
Однако, если я использую tar cf my_folder
в терминале, это займет чуть больше секунды.
ЕслиЯ использую обычный файл, сценарий python также занимает менее 2 секунд.
import tarfile
# tar the folder
tmp_path = 'my_folder'
src_fname = 'nos.tar'
with tarfile.open(src_fname, "w") as tar:
tar.add(tmp_path, arcname='.')
Почему скорость такая разная?В моем случае и временный файл, и nos.tar
записываются на одно устройство /dev/sda1
.Компьютер является экземпляром Google Cloud n1-standard-4/nvidia-tesla-v100/1
в us-central1-a
.
Это замедление, по-видимому, связано с экземпляром gcloud.Я попробовал вышеупомянутые 3 метода на своем локальном компьютере, то есть
tar cf nos.tar my_folder
- использовать обычный файл
- использовать
tempfile.NamedTemporaryFile()
Все они заканчивают в течение 2 секунд.Второй метод работает медленнее, чем первый, примерно на 0,4 секунды, а третий - медленнее, чем первый, примерно на 0,4 секунды, что упоминается в в другом сообщении, посвященном стеку .
На экземпляре gcloud tempfile.NamedTemporaryFile()
находится в /tmp
, и я записал обычный файл в /scratch
.
nos@instance:/scratch$ df -h /scratch/
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 31G 2.2G 29G 7% /
nos@instance:/scratch$ df -h /tmp/
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 31G 2.2G 29G 8% /
Оба указывают на одно и то же устройство, но скорость, кажется, указывает на разные устройства.