Я пытаюсь понять, как я могу реализовать многопроцессорность в моем случае. У меня есть две функции: def all_url() и def new_file(). Первый возвращает список, содержащий множество элементов. Второй использует этот список для цикла "for". Я хочу сделать многопроцессор для второй функции new_file(), потому что список, который возвращается из all_url(), слишком велик.
Пример кода:
def all_url():
#Here I append elements to urllist
return urllist
def new_file():
for each in all_url():
#There a lot of code. Each iteration of loop creates a new html file.
new_file()
Вам нужно будет сделать что-то вроде этого:
from multiprocessing.pool import Pool
def all_url():
#Here I append elements to urllist
return urllist
def new_file():
with Pool() as pool:
pool.map(new_file_process_url, all_url())
def new_file_process_url(each):
# Creates html file.
if __name__ == '__main__':
new_file()
if __name__ == '__main__':
(см. Этот вопрос ). Я обновил ответ.
Не уверен, действительно ли вам нужна потоковая передача, потому что вам нужно подождать, когда будет создан огромный список. Определите функцию all_url
как генератор и вызовите его, когда это необходимо.
def all_url():
yield url # not urllist
url = all_url()
def new_file():
current_url = next(url)
# Do the rest