Я использую multiprocessing.dummy.Pool
для параллельных вызовов RESTful API.
На данный момент код выглядит следующим образом:
from multiprocessing.dummy import Pool
def onecall(args):
env = args[0]
option = args[1]
return env.call(option) # call() returns a list
def call_all():
threadpool = Pool(processes=4)
all_item = []
for item in threadpool.imap_unordered(onecall, ((create_env(), x) for x in range(100))):
all_item.extend(item)
return all_item
В приведенном выше коде env
перенос объектовrequests.Session()
объект и, таким образом, отвечает за поддержание сеанса связи.100 заданий используют 100 различных env
объектов.Таким образом, каждая задача просто создает 1 соединение, выполняет 1 вызов API и отключается.
Однако, чтобы воспользоваться преимуществами поддержки HTTP, я хочу, чтобы 100 задач совместно использовали 4 env
объекта (один объектна поток), поэтому каждое соединение обслуживает несколько вызовов API по одному.Как мне этого добиться?