Перебор в нескольких процессах

Задача: Программа должна перебрать все строки из 'wordlixt.txt' и подставлять их в функцию brute() в 10 процессах.

Но у меня в консоль выводится почему-то 6 раз по '...'.

from multiprocessing import Pool
import os


string_with_pass = 'scooby'


def brute(password):
    if password == string_with_pass:
        print(f'[+] Found: {password}')
        os._exit(0)
    else:
        print(f'...')


def get_pass():
    passwords = open('wordlist.txt', 'r').readlines()
    for line in passwords:
        password = line.strip()
        return password


def main():
    with Pool(10) as p:
        p.map(brute, get_pass())


if __name__ == '__main__':
    main()

Ответы (1 шт):

Автор решения: Evgeniy

Можно попробовать конкурентно запустить:

import asyncio


async def brute(password):
    string_with_pass = 'brutit_ploho'
    if password == string_with_pass:
        return f'Found: {password}'
    else:
        return '...'


async def main(future):
    passwords = await future
    for result in asyncio.as_completed([brute(pswd) for pswd in passwords]):
        print(await result)


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    file = open('asd', 'r')
    passwords_list = file.read().splitlines()

    future = loop.create_future()
    future.set_result(passwords_list)

    asyncio.run(main(future))
→ Ссылка