【发布时间】:2017-03-05 23:07:57
【问题描述】:
我正在使用 Python Unittest 运行测试用例,它生成我已经解析并创建了如下字典的 nose.xml 报告:
{'abc_1': {'duration': 788, 'processed': 0}, 'abc_2': {'duration': 632, 'processed': 0}, 'abc_3': {'duration': 2652, 'processed': 0}, 'abc_4': {'duration': 454, 'processed': 0}, 'abc_5': {'duration': 21, 'processed': 0}, 'abc_6': {'duration': 15, 'processed': 0}, 'abc_7': {'duration': 1200, 'processed': 0}, 'abc_8': {'duration': 8243, 'processed': 0}, 'abc_9': {'duration': 34, 'processed': 0}, 'abc_10': {'duration': 10829, 'processed': 0}, 'abc_11': {'duration': 3879, 'processed': 0}, 'abc_12': {'duration': 121, 'processed': 0}, 'abc_13': {'duration': 684, 'processed': 0}, 'abc_14': {'duration': 1500, 'processed': 0}, 'abc_15': {'duration': 1517, 'processed': 0}, 'abc_16': {'duration': 186, 'processed': 0}, 'abc_17': {'duration': 2033, 'processed': 0}, 'abc_18': {'duration': 1243, 'processed': 0}}
这里, abc_* 是脚本名称,duration 是该特定脚本执行所花费的总时间。 (例如:- abc_18 总共运行了 1243 秒)。
现在,我想根据时间(持续时间)将所有脚本分成 4 个(或 5 个或 6 个或动态)不同的组,这样所有组的时间都相等。
喜欢:
Grp1 - abc_18,abc_1,abc_4
Grp2 - abc_17,abc_10,abc_11
Grp3 - abc_2,abc_3
python有什么算法可以做这个操作吗?
How to understand the dynamic programming solution in linear partitioning? 中给出的pythonic 解决方案正在运行,但不确定如何使用我的列表,因为我对 python 很陌生:my_list = [('abc_1', 15), ('abc_2', 21), ('abc_3', 34), ('abc_4', 121), ('abc_5', 186), ('abc_6', 332), ('abc_7', 454), ('abc_8', 456), (' abc_9', 632), ('abc_10', 684), ('abc_11', 1200), ('abc_12', 1243), ('abc_13', 1500), ('abc_14', 1517), ('abc_15' , 2033), ('abc_16', 2652), ('abc_17', 3879), ('abc_18', 8243), ('abc_19', 10829)]
如果有人可以帮助我重新编写该代码,那将是很大的帮助。
【问题讨论】:
-
equal 时间似乎非常现实,但您的意思是要设置多个组,比如 5 个,然后将脚本分组到五个组之一,这样最慢组和最快组的总运行时间之间的差异最小化(或任何其他此类良好分组的指标)?
-
当我说 5 时,所有脚本必须分成 5 个(逻辑)组,这样所有组的执行时间几乎相等。我怎样才能使用相等的时间?你能给我一些参考吗?
-
stackoverflow.com/questions/7938809/… 正在工作,但不确定如何申请我的代码?任何帮助都会很棒。
标签: python algorithm python-2.7 python-3.x