Как я могу запустить функцию параллельно и записать ее в файл? - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть функция, которая читает из файла сайтов и запрашивает целевую страницу. Затем я обрабатываю целевую страницу для получения информации, но я делаю много проверок, и ее линейный запуск занимает очень много времени. Ниже приведен пример того, что у меня сейчас есть.

def main()
    err_file = open("error.txt", "w+")
    res_file = open("results.txt", "w+")
    with open("a_file.txt", "r") as sites:
        for url in sites:
            try:
                info = requests(url)
            except Exception as exc:
                err.file.write(exc)
            else:
                basic = get_basic(info)
                res_file.write(check_more(info, basic))     # How can I make this faster?

def check_more(info, basic):
    '''
    Many regexes are done and results are written to a string variable
    '''
    final_result = basic + result_of_searching
    return final_result

Функция check_more () занимает много времени, и это время обработки увеличивается с увеличением размера веб-страницы. Как я могу запустить check_more () в фоновом режиме, так как я продолжаю обрабатывать больше URL и записывать результаты check_more () в файл?

Я пробовал многопроцессорную очередь и concurrent.futures, но мне не повезло заставить его работать со структурой, которая у меня есть в настоящее время.

Я запускаю это на ВМ, поэтому сокеты не являются поточно-ориентированными, поэтому я выполняю запросы индивидуально. get_basic () выполняет вызов сокета, чтобы получить IP-адрес URL.

...