multiprocessing.Pool может быть хорошим делом, есть несколько полезных примеров . Например, если у вас есть список URL-адресов, вы можете сопоставить получение содержимого одновременно:
def process_url(url):
# Do what you want
return what_you_want
pool = multiprocessing.Pool(processes=4) # how much parallelism?
pool.map(process_url, list_of_urls)
Создает группу процессов, по одному для каждого URL-адреса, который вы хотите загрузить. Используйте Queue
для хранения списка URL-адресов и заставьте каждый процесс читать URL-адрес из очереди, обрабатывать его и возвращать значение.
Используйте для этого асинхронную, т. Е. Управляемую событиями, а не блокирующую структуру сети. Один из вариантов - использовать скрученный . Другой вариант, который стал доступным в последнее время, - это использование монокля. Этот мини-фреймворк скрывает сложности неблокирующих операций. См. этот пример . За кулисами он может использовать закрученные волны или торнадо, но вы этого особо не замечаете.