我想并行运行两个功能。这些功能被循环执行多次。
这是我的代码:

#get the html content of the first rental
previous_url_rental=BeautifulSoup(urllib.urlopen(rentals[0]))

#for each rental on the page
for rental_num in xrange(1, len(rentals)):
    #get the html content of the page
    url_rental=BeautifulSoup(urllib.urlopen(rentals[rental_num]))
    #get and save the rental data in the csv file
    writer.writerow(get_data_rental(previous_url_rental))
    previous_url_rental=url_rental

#save last rental
writer.writerow(get_data_rental(previous_url_rental))


主要有两件事:

1 /获取页面的html内容:
url_rental=BeautifulSoup(urllib.urlopen(rentals[rental_num]))

2 /从上一页(而不是当前页)的html内容中检索和保存数据,因为这两个过程将是相关的:
writer.writerow(get_data_rental(previous_url_rental))

我想并行运行这两行:第一个进程将获取页面n+1的html内容,而第二个进程将获取并保存页面n的数据。
到目前为止,我已经搜索并找到了这篇文章:Python: How can I run python functions in parallel?。但是我不知道如何使用它!

感谢您的时间。

最佳答案

为了在Python中并行运行功能(即在多个CPU上),您需要使用Multiprocessing Module

但是,我怀疑这仅在两个实例中值得付出努力。

如果可以并行运行两个以上的进程,请使用上述模块中的Pool类,文档中有一个示例。

池中的每个工作人员将从一页检索并保存数据,以获取下一个要做的工作。但是,这并不容易,因为您的编写者必须能够同时处理多个写入。因此,您可能还需要一个队列来序列化写入,每个工作人员只需检索页面,提取信息并将结果发送到队列以供写入器处理。

08-07 16:35