如何对循环使用miltiprocessing



我正在努力了解如何在我的案例中实现多处理。我有两个函数:defall_urlDefnew_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's 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()

不确定您是否真的需要线程处理,因为您必须等待生成一个巨大的列表。将all_url函数定义为生成器,并在需要时调用它。

def all_url():
yield url # not urllist
url = all_url()
def new_file():
current_url = next(url)
# Do the rest 

相关内容

  • 没有找到相关文章

最新更新