Skip to content

Instantly share code, notes, and snippets.

@vietkute02
Created July 16, 2024 02:16
Show Gist options
  • Save vietkute02/6e6bdeff844b206f7606686ef6e6d54c to your computer and use it in GitHub Desktop.
Save vietkute02/6e6bdeff844b206f7606686ef6e6d54c to your computer and use it in GitHub Desktop.
import os
import time
import random
import argparse
def create_random_files(folder_path, num_files, min_size, max_size):
open_times, write_times, close_times = 0, 0, 0
for i in range(1, num_files + 1):
file_name = f"{i}.m4s"
file_path = os.path.join(folder_path, file_name)
file_size = random.randint(min_size, max_size) * 1024 * 1024 # Convert MB to bytes
# Measure file open time
start_time = time.time()
file = open(file_path, 'wb')
open_times += (time.time() - start_time)
# Measure file write time
start_time = time.time()
file.write(os.urandom(file_size))
write_times += (time.time() - start_time)
# Measure file close time
start_time = time.time()
file.close()
close_times += (time.time() - start_time)
return open_times, write_times, close_times
def now():
seconds = time.time()
local_time = time.localtime(seconds)
milliseconds = int((seconds - int(seconds)) * 1000)
return time.strftime(f"%H:%M:%S.{milliseconds:03d}", local_time)
def log(msg):
print(f"[{now()}] {msg}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Create random files and measure operation times.")
parser.add_argument("folder", type=str, help="Path to the folder where files will be created")
args = parser.parse_args()
num_files = 10
min_size = 1 # MB
max_size = 2 # MB
sleep_time = 2 # Seconds
folder = args.folder
log(f"Start: output {folder}, file {num_files}, sleep {sleep_time}")
if not os.path.exists(folder):
os.makedirs(folder)
for i in range(200):
t = time.time()
open_times, write_times, close_times = create_random_files(folder, num_files, min_size, max_size)
log(f"Time: open {open_times:.2f}, write {write_times:.2f}, close {close_times:.2f}")
dt = time.time() - t
if dt < sleep_time:
time.sleep(sleep_time - dt)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment