Создание больших случайных файлов содержимого в Python

Я работаю над характеристикой накопителя SSD, чтобы определить максимальную TBW / ожидаемую продолжительность жизни.

В настоящее время я использую BASH для генерации 500 МБ файлов со случайным (ненулевым) содержимым:

dd if=<(openssl enc -aes-128-cbc -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero) of=/media/m2_adv3d/abc${stamp1} bs=1MB count=500 iflag=fullblock&

Note : {stamp1} is a time stamp for ensuring unique file names.

Я пытаюсь достичь того же результата в Python, но не нахожу эффективных способов сделать это (быстро сгенерировать файл).

Ищу предложения.

Спасибо!


Обновить

Я экспериментировал со следующим и, кажется, достиг 2-х секундной записи; файлы выглядят случайными и разными:

import os

newfile = open("testfile.001", "a")
newfile.write (os.urandom(500000000))    # generate 500MB random content file
newfile.close ()

Немного скептически отношусь к тому, что это действительно хорошо, чтобы подчеркнуть SSD. В основном это будет бесконечный цикл; когда диск заполнен, удаление старого файла и запись нового, а также сбор SMART-данных каждые 500 файлов, записанных для отслеживания старения.

Мысли?

Спасибо,

Дан.

1 ответ

Опция os.urandom лучше всего подходит для создания больших случайных файлов.

Вы можете попробовать что-то так просто, как это.

import pandas as pd
import numpy as np

rows = 100000
cols = 10000

table_size = [rows,cols]

x = np.ones(table_size)
pd.DataFrame(x).to_csv(path)

Вы можете обновить размер таблицы, чтобы она была больше или меньше. Я не уверен, что это более / менее эффективно, чем то, что вы уже пытаетесь.

Другие вопросы по тегам