Как назначить сессии запросов Python для отдельных процессов в многопроцессорном пуле? - PullRequest
0 голосов
/ 09 октября 2018

В следующем примере кода:

import multiprocessing
import requests

session = requests.Session()
data_to_be_processed = [...]

def process(arg):
    # do stuff with arg and get url
    response = session.get(url)
    # process response and generate data...
    return data

with multiprocessing.Pool() as pool:
    results = pool.map(process, data_to_be_processed)

Например, Session назначается как глобальная переменная, поэтому после создания процессов в Pool она будет скопирована в каждый подпроцесс.Я не уверен, является ли сеанс потокобезопасным, и как работает пул в сеансе, поэтому Я хотел бы назначить отдельный объект сеанса для каждого процесса в пуле .

Я знаю, что ямог бы просто использовать requests.get(url) вместо session.get(url), но я бы хотел работать с сессией, и я также рассматриваю возможность использования requests-html (https://html.python -requests.org / ).

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

Есть ли способ сделать это чисто и понятно?

...