使用Python中2个不同列表中的参数同时并行运行2个函数
我有两个函数,用于获取两个独立网站的内容使用Python中2个不同列表中的参数同时并行运行2个函数,python,parallel-processing,Python,Parallel Processing,我有两个函数,用于获取两个独立网站的内容 crawlFunctionSiteA() crawlFunctionSiteB() 我还有两个要获取的URL列表,它们应该作为参数传递给相应的函数。如您所见,它们按站点划分: listURLSiteA = ['url1','url2','url3'] listURLSiteB = ['url4','url5','url6','url7','url8'] listUrlSiteB比listURLSiteA长。我希望能够同时执行crawfunction
crawlFunctionSiteA()
crawlFunctionSiteB()
我还有两个要获取的URL列表,它们应该作为参数传递给相应的函数。如您所见,它们按站点划分:
listURLSiteA = ['url1','url2','url3']
listURLSiteB = ['url4','url5','url6','url7','url8']
listUrlSiteB比listURLSiteA长。我希望能够同时执行crawfunctionsitea()和crawfunctionsiteb(),将参数从listURLSiteA传递到crawfunctionsitea(),并将listURLSiteB传递到crawfunctionsiteb()。可能listURLSiteA的爬网速度比listURLSiteB快
我试着做:
executors_list = []
with ThreadPoolExecutor(max_workers=2) as executor:
for i in listURLSiteA:
executors_list.append(executor.submit(crawlFunctionSiteA(), i))
for j in listURLSiteB:
executors_list.append(executor.submit(crawlFunctionSiteB(), j))
代码运行正常,但我得到了错误的结果。通过分析我的输出,我发现脚本同时运行crawlFunctionSiteA('url1')和crawlFunctionSiteA('url2'),但并不完全运行
你知道如何做我想要的吗?为什么不为
crawlFunctionSiteA
和crawfunctionsiteb
分别运行一个脚本/流程?你说的“同时而不是完全”是什么意思?这些功能是否以任何方式相互作用?您是否知道,executor.submit(crawlFunctionSiteA(),i)
运行crawfunctionsitea
,然后创建一个将i
传递给crawfunctionsitea
结果的未来?两个单独的脚本/文件是可行的,但不是很优雅…..当您说两个进程时,这是什么意思?这些函数将数据写入同一个数据库,但它们不进行交互。不,我不知道这一点,而且在并行处理方面相当缺乏经验。只向每个函数传递一个url,而不传递for循环,效果非常好。问题在于列表。在这段特定的代码中,crawlffunctionsitea()并行而非顺序地抓取了url1和url2。我已经研究了输出,我注意到了。不知何故,跳过了许多值。不知道为什么。当只向每个函数传递一个URL(不是从列表中传递)时,这些函数可以正常工作。为什么不为crawfunctionsitea
和crawfunctionsiteb
分别运行一个单独的脚本/进程?你说的“同时而不是完全”是什么意思?这些功能是否以任何方式相互作用?您是否知道,executor.submit(crawlFunctionSiteA(),i)
运行crawfunctionsitea
,然后创建一个将i
传递给crawfunctionsitea
结果的未来?两个单独的脚本/文件是可行的,但不是很优雅…..当您说两个进程时,这是什么意思?这些函数将数据写入同一个数据库,但它们不进行交互。不,我不知道这一点,而且在并行处理方面相当缺乏经验。只向每个函数传递一个url,而不传递for循环,效果非常好。问题在于列表。在这段特定的代码中,crawlffunctionsitea()并行而非顺序地抓取了url1和url2。我已经研究了输出,我注意到了。不知何故,跳过了许多值。不知道为什么。当只向每个URL传递一个URL(不是从列表中传递)时,这些函数可以正常工作。