我想并行运行两个功能。这些功能被循环执行多次。
这是我的代码:
#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类,文档中有一个示例。
池中的每个工作人员将从一页检索并保存数据,以获取下一个要做的工作。但是,这并不容易,因为您的编写者必须能够同时处理多个写入。因此,您可能还需要一个队列来序列化写入,每个工作人员只需检索页面,提取信息并将结果发送到队列以供写入器处理。