-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwls.py
More file actions
52 lines (40 loc) · 1.21 KB
/
wls.py
File metadata and controls
52 lines (40 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import cfg
class WL():
def __init__(self, priority):
self.priority = priority
self.wl = []
def arrive(self, member):
if member.priority == self.priority:
self.wl.insert(0, member)
return True
return False
def leave(self):
if self.wl.__len__() == 0:
return None
mem = self.wl.pop()
if mem.is_dead():
if cfg.LOG:
print(
f"(#leave for ID={mem._id} ==> status {mem.status} | queue at {cfg.current_time})")
return self.leave()
return mem
def is_empty(self):
return not self.wl
def get_length(self):
return len(self.wl)
class WLS():
def __init__(self):
self.Line1 = WL(1)
self.Line2 = WL(2)
def arrive(self, member):
if self.Line1.arrive(member):
return None
self.Line2.arrive(member)
def leave(self):
if self.Line1.is_empty():
return self.Line2.leave()
return self.Line1.leave()
def is_empty(self):
return self.Line1.is_empty() and self.Line2.is_empty()
def get_length(self):
return self.Line1.get_length() + self.Line2.get_length()