def start_new_thread(function, args, kwargs=None): # real signature unknown; restored from __doc__
"""
start_new_thread(function, args[, kwargs])
(start_new() is an obsolete synonym)
Start a new thread and return its identifier. The thread will call the
function with positional arguments from the tuple args and keyword arguments
taken from the optional dictionary kwargs. The thread exits when the
function returns; the return value is ignored. The thread will also exit
when the function raises an unhandled exception; a stack trace will be
printed unless the exception is SystemExit.
"""
pass
In [1]: import itertools
In [5]: files = [
...: 'Имя_1_Время_00_00',
...: 'Имя_2_Время_00_01',
...: 'Имя_1_Время_00_02',
...: 'Имя_5_Время_00_03',
...: 'Имя_5_Время_00_04',
...: ]
In [6]: splited_names = [name.split('_') for name in files]
In [7]: splited_names
Out[7]:
[['Имя', '1', 'Время', '00', '00'],
['Имя', '2', 'Время', '00', '01'],
['Имя', '1', 'Время', '00', '02'],
['Имя', '5', 'Время', '00', '03'],
['Имя', '5', 'Время', '00', '04']]
In [8]: splited_names.sort()
In [9]: splited_names
Out[9]:
[['Имя', '1', 'Время', '00', '00'],
['Имя', '1', 'Время', '00', '02'],
['Имя', '2', 'Время', '00', '01'],
['Имя', '5', 'Время', '00', '03'],
['Имя', '5', 'Время', '00', '04']]
In [12]: for group, items in itertools.groupby(splited_names, key=lambda v: v[:2]):
...: print('-' * 10)
...: for item in items:
...: print(item, '{}-{}-{}-{}{}'.format(*item))
...:
...:
----------
['Имя', '1', 'Время', '00', '00'] Имя-1-Время-0000
['Имя', '1', 'Время', '00', '02'] Имя-1-Время-0002
----------
['Имя', '2', 'Время', '00', '01'] Имя-2-Время-0001
----------
['Имя', '5', 'Время', '00', '03'] Имя-5-Время-0003
['Имя', '5', 'Время', '00', '04'] Имя-5-Время-0004
По этому заменил рандомом обычным, ибо нам не страшно предсказание по процессорозависимым алгоритмам для примера
по этому брал хэш, у которого достаточно большая энтропия.
а набивать чистым рандомом файл долго
python3 -c "import sys, random; all(sys.stdout.buffer.write(bytes([random.randint(0, 255)])) for _ in range(10**6)) and None">rnd1m.bin
Суть от этого не поменяется, достаточно большие наборы будут сжиматься, даже тупыми алгоритмами сжатия "в лоб", типа лвз. Более продвинутые будут сжимать чуть получше
<?php
file_put_contents('rnd2.bin', random_bytes(1000000));
dd if=/dev/urandom bs=1 count=1000000 | gzip > f.gz
очевидно что среди прочих комбинаций может быть как ровно 50 сочетаний 01 подряд, или 100 единиц, или 100 нулей, или 50 единиц и потом 50 нулей.