python пул показывает только один PID> обрабатывается ли он параллельно? - PullRequest
1 голос
/ 14 июля 2020

Я совсем новичок ie в python, поэтому, пожалуйста, ответьте на мой новый ie вопрос.
Я пытаюсь запустить набор задач в пуле, чтобы ускорить процесс, но я m не вижу улучшения скорости.
Я попытался запустить его двумя разными способами, чтобы выяснить, что происходит, и мои выходные данные показывают, что используется только один PID. Означает ли это, что я неправильно использую пулы?

Я сделал небольшой макет на основе скрипта, который пытаюсь запустить:

import sys, shutil, time, 
from multiprocessing import Pool, TimeoutError
        
def download(link):
    print(os.getpid())
    print("done!"
    
def download(links):
    print("done 2 !")
    for link in links:
            print(os.getpid())
            
if __name__ == '__main__':
    list_of_links=[...]
    pool = Pool(processes=4)             
    #option 1
    #   [pool.apply_async(download(link),(link,)) for link in list_of_links]
    #option 2
    pool.map(download(list_of_links),list_of_links)     

На выходе отображается один и тот же PID (при каждом вызове)

Для варианта 1

22300
done!
22300
done!
22300

для варианта 2

done 2 !
20328
20328
20328
20328

Это нормальное поведение? или ? Я что-то не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...