当我在寻找有效的SJF实现时,我找到了这篇文章。在
Implementation of Shortest Job First (SJF) Non-Preemptive CPU scheduling algorithm using C++
我把这段代码的python版本写成这样:
class Schedule(object):
def __init__(self, name, at, bt):
self.name = name
self.at = at
self.bt = bt
self.ct = 0
def solution2(processes):
pro = []
for p in processes:
pro.append(Schedule(p[0], p[1], p[2]))
pro.sort(key=lambda x: x.at)
pro[0].ct = pro[0].bt + pro[0].at
for j in range(1, len(processes)):
ab = pro[j-1].ct
# partial sorting <-------------- right here !!!!
waitings = list(filter(lambda x: x.at <= ab, pro[j:]))
pro[j:j+len(waitings)] = sorted(waitings, key=lambda x: x.bt)
# partial sorting end
if pro[j-1].ct < pro[j].at:
pro[j].ct = pro[j-1].ct + pro[j].bt + pro[j].at - pro[j-1].ct
else:
pro[j].ct = pro[j-1].ct + pro[j].bt
在上面的代码中,我想知道是否有更多的python方法来实现“部分排序”,我将其命名为。在
看起来C++的排序版本更清晰易懂。在
^{pr2}$更新:关于下面的问题,我得到了一些提示。所以我删除它。 附加问题:
实际上,我在寻找在python中使用'heapq'的SJF示例代码。
如果您能告诉我如何在这种情况下应用“heapq”将不胜感激。
进程到达时间应该是可变的,如上述情况。
目前没有回答
相关问题 更多 >
编程相关推荐