需求:三个任务处理单元:000,001,002,按照20%:30%:50%的比例进行任务分配,任务总量未知。
在实际分配任务的过程中,对于单个任务来说,不再进行拆分。
处理单元在接收任务时也是以个数为粒度进行处理,所以先将设定的比例转换为整数,方便以个数进行处理。
方法一:
每次分配任务时,计算处理单元已收到的任务占已分配的总任务比例,小于该处理单元的设定比例时,分配给该单元。
import time
def main():
ratio = [2,5,3]
list_000 =[]
list_001 =[]
list_002 =[]
list = [list_000,list_001,list_002]
t1 = time.time()
for i in range(1,1000001):
flag = 0
for j ,k in enumerate(ratio):
if k != 0 :
if len(list[j])==0 and flag == 0:
list[j].append(i)
flag = 1
elif len(list[j])/i < k/sum(ratio):
list[j].append(i)
flag = 1
if flag == 1:
break
t2 &