Я слышал, что многопоточность Python — это немного сложно, и я не уверен, как лучше всего реализовать то, что мне нужно. Допустим, у меня есть функция IO_intensive_function, которая выполняет некоторый вызов API, получение ответа на который может занять некоторое время.
Скажем, процесс постановки заданий в очередь может выглядеть примерно так:
Код: Выделить всё
import thread
for job_args in jobs:
thread.start_new_thread(IO_intense_function, (job_args))
Будет ли IO_intense_function теперь просто выполнять свою задачу в фоновом режиме и позволять мне ставить в очередь больше заданий?
Я также рассмотрел этот вопрос, который, похоже, состоит в том, чтобы просто сделать следующее:
Код: Выделить всё
from multiprocessing.dummy import Pool as ThreadPool
pool = ThreadPool(2)
results = pool.map(IO_intensive_function, jobs)
Поскольку мне не нужно, чтобы эти задачи взаимодействовали друг с другом, единственная цель — отправлять запросы API как можно быстрее. Это самый эффективный способ? Спасибо.
Изменить:
Я делаю запрос API через службу Thrift.
Подробнее здесь:
https://stackoverflow.com/questions/655 ... ing-method