@@ -74,7 +74,9 @@ def _simulate_fcfs(self) -> Generator[tuple[int, str, list[str]], None, None]:
7474 process ["completion" ] = t
7575
7676 # shortest job first non preemptive
77- def _simulate_sjf_np (self ) -> Generator [tuple [int , str | None , list [str ]], None , None ]:
77+ def _simulate_sjf_np (
78+ self ,
79+ ) -> Generator [tuple [int , str | None , list [str ]], None , None ]:
7880 """
7981 Simulates Shortest Job First (Non-Preemptive).
8082
@@ -87,7 +89,11 @@ def _simulate_sjf_np(self) -> Generator[tuple[int, str | None, list[str]], None,
8789 processes = sorted (self .processes , key = lambda process : process ["arrival" ])
8890 done = 0
8991 while done < len (processes ):
90- ready = [process for process in processes if process ["arrival" ] <= t and "completion" not in process ]
92+ ready = [
93+ process
94+ for process in processes
95+ if process ["arrival" ] <= t and "completion" not in process
96+ ]
9197 if not ready :
9298 t += 1
9399 yield (t , None , [])
@@ -101,13 +107,19 @@ def _simulate_sjf_np(self) -> Generator[tuple[int, str | None, list[str]], None,
101107 done += 1
102108
103109 # shortest job first preemptive
104- def _simulate_sjf_p (self ) -> Generator [tuple [int , str | None , list [str ]], None , None ]:
110+ def _simulate_sjf_p (
111+ self ,
112+ ) -> Generator [tuple [int , str | None , list [str ]], None , None ]:
105113 """Simulates SJF Preemptive scheduling."""
106114 t = 0
107115 processes = sorted (self .processes , key = lambda process : process ["arrival" ])
108116 done = 0
109117 while done < len (processes ):
110- ready = [process for process in processes if process ["arrival" ] <= t and process ["remaining" ] > 0 ]
118+ ready = [
119+ process
120+ for process in processes
121+ if process ["arrival" ] <= t and process ["remaining" ] > 0
122+ ]
111123 if not ready :
112124 t += 1
113125 yield (t , None , [])
@@ -122,12 +134,18 @@ def _simulate_sjf_p(self) -> Generator[tuple[int, str | None, list[str]], None,
122134 t += 1
123135
124136 # priority non preemptive
125- def _simulate_priority_np (self ) -> Generator [tuple [int , str | None , list [str ]], None , None ]:
137+ def _simulate_priority_np (
138+ self ,
139+ ) -> Generator [tuple [int , str | None , list [str ]], None , None ]:
126140 """Simulates Priority (Non-Preemptive) scheduling."""
127141 t = 0
128142 done = 0
129143 while done < len (self .processes ):
130- ready = [process for process in self .processes if process ["arrival" ] <= t and "completion" not in process ]
144+ ready = [
145+ process
146+ for process in self .processes
147+ if process ["arrival" ] <= t and "completion" not in process
148+ ]
131149 if not ready :
132150 t += 1
133151 yield (t , None , [])
@@ -141,12 +159,18 @@ def _simulate_priority_np(self) -> Generator[tuple[int, str | None, list[str]],
141159 done += 1
142160
143161 # priority preemptive
144- def _simulate_priority_p (self ) -> Generator [tuple [int , str | None , list [str ]], None , None ]:
162+ def _simulate_priority_p (
163+ self ,
164+ ) -> Generator [tuple [int , str | None , list [str ]], None , None ]:
145165 """Simulates Priority (Preemptive) scheduling."""
146166 t = 0
147167 done = 0
148168 while done < len (self .processes ):
149- ready = [process for process in self .processes if process ["arrival" ] <= t and process ["remaining" ] > 0 ]
169+ ready = [
170+ process
171+ for process in self .processes
172+ if process ["arrival" ] <= t and process ["remaining" ] > 0
173+ ]
150174 if not ready :
151175 t += 1
152176 yield (t , None , [])
@@ -244,8 +268,12 @@ def setup_ui(self) -> None:
244268 self .arrival_e .grid (row = 1 , column = 1 )
245269 self .burst_e .grid (row = 2 , column = 1 )
246270 self .priority_e .grid (row = 3 , column = 1 )
247- ttk .Button (form , text = "Add" , command = self .add_process ).grid (row = 4 , column = 0 , pady = 5 )
248- ttk .Button (form , text = "Delete" , command = self .delete_process ).grid (row = 4 , column = 1 )
271+ ttk .Button (form , text = "Add" , command = self .add_process ).grid (
272+ row = 4 , column = 0 , pady = 5
273+ )
274+ ttk .Button (form , text = "Delete" , command = self .delete_process ).grid (
275+ row = 4 , column = 1
276+ )
249277
250278 algo_frame = ttk .Frame (self .root )
251279 algo_frame .pack (pady = 10 )
@@ -267,7 +295,9 @@ def setup_ui(self) -> None:
267295 self .quantum_e = ttk .Entry (algo_frame , width = 5 )
268296 self .quantum_e .insert (0 , "2" )
269297 self .quantum_e .pack (side = "left" )
270- ttk .Button (algo_frame , text = "Run" , command = self .run_scheduling ).pack (side = "left" , padx = 10 )
298+ ttk .Button (algo_frame , text = "Run" , command = self .run_scheduling ).pack (
299+ side = "left" , padx = 10
300+ )
271301
272302 self .ready_label = ttk .Label (self .root , text = "Ready Queue:" )
273303 self .ready_list = tk .Listbox (self .root , height = 3 )
@@ -338,7 +368,9 @@ def animate(self) -> None:
338368 current_pid = pid
339369 colors .setdefault (pid , plt .cm .tab20 (len (colors ) % 20 ))
340370 self .ax .barh (0 , 1 , left = x , color = colors [pid ])
341- self .ax .text (x + 0.5 , 0 , pid , ha = "center" , va = "center" , color = "white" , fontsize = 9 )
371+ self .ax .text (
372+ x + 0.5 , 0 , pid , ha = "center" , va = "center" , color = "white" , fontsize = 9
373+ )
342374 x += 1
343375 self .ax .set_xticks (range (x + 1 ))
344376 self .ax .set_yticks ([])
@@ -363,7 +395,7 @@ def show_results(self) -> None:
363395 total_rt += row [6 ]
364396 n = len (self .engine .stats ) or 1
365397 self .avg_label .config (
366- text = f"AVG WT = { total_wt / n :.2f} | AVG TAT = { total_tat / n :.2f} | AVG RT = { total_rt / n :.2f} "
398+ text = f"AVG WT = { total_wt / n :.2f} | AVG TAT = { total_tat / n :.2f} | AVG RT = { total_rt / n :.2f} "
367399 )
368400
369401
0 commit comments