流水线调度问题

本文分享了一个针对华为机考中出现的经典流水线调度问题的Python实现方案。该方案通过排序和分配任务来模拟流水线的工作流程,并计算完成所有工作的最短时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

备考华为机考的时遇到一个经典流水线调度:

 想到个比较容易理解的python版本,但是不确定这样有什么问题:

import sys

s1 = "5 5"
s2 = "8 4 3 2 10 12 1"
nums = int(s1.split(" ")[0])
works = [int(x) for x in s2.split(" ")]
works.sort()
print(works)
if nums >= len(works):
    print(max(works))
    sys.exit()
socks = works[0:nums]
res = {}
for i in socks:
    res[socks.index(i)] = []
time = 0
works_index = len(socks)
# print(works[4])

while True:
    time += 1
    # print(time)
    if time == works[works_index]:
        print(f"local_mintime:{time}")
        local_mintime = min(socks)
        res[socks.index(local_mintime)].append(local_mintime)
        socks[socks.index(local_mintime)] = time
        works_index += 1
        print(socks)
    if works_index == len(works):
        break
print(res)
fl = []
for i in res:
    sum_ = sum(res[i]) + socks[i]
    fl.append(sum_)
print(max(fl))

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值