【发布时间】:2014-10-23 18:10:20
【问题描述】:
通常我使用以下代码,当您不关心函数process_func将处理某些参数时,它可以正常工作:
params = [1,2,3,4,5 ... ]
def process_func():
...
pool = new Pool(40)
pool.map(process_func, params)
pool.close()
pool.join()
在上面的示例中,我们有一种类型的进程,最大同时数为 40。但是.. 假设我们有不同类型的进程(参数),应该同时执行。例如,在我的 selenium 网格中,我有 40 个 firefox,40 个 chrome。而且我有 5000 个测试用例,其中一些更喜欢 chrome,其中一些更喜欢 firefox,其中一些无关紧要。
例如,假设我们有以下类型:
- type firefox:最大同时数:40
- type chrome:最大同时数:40
在这种情况下,我们的池将最多同时有 80 个进程,但有严格的规定:其中 40 个必须是 firefox,其中 40 个必须是 chrome。
这意味着参数不会一个接一个地被取走。池必须从参数列表中选择值,以使每个进程类型具有最大值。
如何做到这一点?
【问题讨论】:
-
有理由不简单地使用两个池和两个输入列表吗?
标签: python python-2.7 selenium multiprocessing selenium-grid