使用字典确定何时同时启动4个进程

时间:2014-06-30 16:36:04

标签: python algorithm dictionary

对于我写的剧本,我会收到一本字典,如:

Proc_rundict = {Proc1:[Intervals], Proc2:[intervals], Proc3:[Intervals], Proc4:[intervals]}

我需要确定所有4个进程何时开启,其中3个进程处于打开状态,其中2个进程处于打开状态,然后只有1个进程处于打开状态。问题是间隔不是严格统一的,我只是想知道如何解决这个问题。

间隔可以是:

[[2.4565,2.5678],[2.7635,2.8898],...]

对此问题的任何帮助都会有所帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

def check_procs(curr_time, proc_dict):
    running = []
    for key, intervals in proc_dict.items():
          for start, end in intervals:
              if start<=curr_time<=end:
                   running.append(key)
                   break
    return running 

可能是我会这样做的...

答案 1 :(得分:0)

查找每个开始时间和每个结束时间,对它们进行排序,并将时间分成这些子区间。然后,对于每个子区间,您可以计算正在运行的进程数。

times = []
for proc, intervals in Proc_rundict.items():
    for start, end in intervals:
        times.append(start)
        times.append(end)

sorted_times = sorted(times)
for i in range(1, len(sorted_times):
    start, end = sorted_times[i-1:i]
    running_this_interval = min(check_procs(start, Proc_dict), check_procs(end, Proc_dict))

(假设来自Joran Beasley的check_procs答案,复制如下)

def check_procs(curr_time, proc_dict):
    running = []
    for key, intervals in proc_dict.items():
        for start, end in intervals:
            if start<=curr_time<=end:
                running.append(key)
                break
    return running