Распараллеливание процесса перебора по нескольким ядрам процессора или потокам может значительно ускорить процесс.
Пример с multiprocessing:
import multiprocessing
import itertools
def check_passwords(start, end, target_password, password_length):
for combination in itertools.product('0123456789', repeat=password_length):
password = ''.join(combination)
if int(password) >= start and int(password) < end:
if password == target_password:
print(f"Пароль найден: {password}"
return password
if __name__ == '__main__':
target_password = input('Придумай пароль --> '
password_length = len(target_password)
num_processes = multiprocessing.cpu_count()
range_size = 10**password_length
chunk_size = range_size // num_processes
processes = []
for i in range(num_processes):
start = i * chunk_size
end = (i + 1) * chunk_size if i < num_processes - 1 else range_size
process = multiprocessing.Process(target=check_passwords, args=(start, end, target_password, password_length))
processes.append(process)
process.start()
for process in processes:
process.join()