使用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(不是从列表中传递)时,这些函数可以正常工作。