multiprocessing.pool ThreadPool не выполняет базовые функции - PullRequest
0 голосов
/ 23 января 2019

я построил себе скребок.Имея несколько целей на одной странице, я хотел создать список, содержащий все URL-адреса, которые затем следует удалить.Очистка занимает некоторое время, и мне нужно очистить их одновременно.Потому что я не хочу «поддерживать» x-сценарии для x-URL-адресов, я хочу многопроцессорных и порождать процесс для каждого URL-адреса в «списке».После некоторого duckduckgo и прочтения, например, здесь: https://keyboardinterrupt.org/multithreading-in-python-2-7/ и здесь: Когда мы должны вызвать multiprocessing.Pool.join? Я пришел с предоставленным кодом.Выполненный в строке cmd, код выполняет основной цикл, но без входа в функцию scrape () (внутри будут некоторые печатные сообщения, которые не выводятся).Сообщение об ошибке не выводится, и скрипт завершается как обычно.Чего мне не хватает?
Я использую Python 2.7 на win x64.
Я уже прочитал:
Пул потоков, похожий на пул многопроцессорной обработки?
https://docs.python.org/2/library/threading.html
https://keyboardinterrupt.org/multithreading-in-python-2-7/
но я не помог.

def main():
    try:
        from multiprocessing import process
        from multiprocessing.pool import ThreadPool
        from multiprocessing import pool
        thread_count = 10 # Define the limit of concurrent running threads
        thread_pool = ThreadPool(processes=thread_count) # Define the thread pool to keep track of the sub processes
        known_threads = {}
        list=[]
        list=def_list() # Just assigns the url's to the list
        for entry in range(len(list)):
            print 'starting to scrape'
            print list[entry]
            known_threads[entry] = thread_pool.apply_async(scrape, args=(list[entry]))
        thread_pool.close() # After all threads started we close the pool
        thread_pool.join() # And wait until all threads are done
        except Exception, err:
            print Exception, err, 'Failed in main loop'
        pass
...