Skip to content

Commit c23cd24

Browse files
Iterate subprocesses in-place (#2373)
* replace suprocesses inplace * list is not resized, no need for copying
1 parent d79f285 commit c23cd24

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

uvicorn/supervisors/multiprocess.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ def join_all(self) -> None:
134134
process.join()
135135

136136
def restart_all(self) -> None:
137-
for idx, process in enumerate(tuple(self.processes)):
137+
for idx, process in enumerate(self.processes):
138138
process.terminate()
139139
process.join()
140140
new_process = Process(self.config, self.target, self.sockets)
@@ -163,7 +163,7 @@ def keep_subprocess_alive(self) -> None:
163163
if self.should_exit.is_set():
164164
return # parent process is exiting, no need to keep subprocess alive
165165

166-
for idx, process in enumerate(tuple(self.processes)):
166+
for idx, process in enumerate(self.processes):
167167
if process.is_alive():
168168
continue
169169

@@ -174,10 +174,9 @@ def keep_subprocess_alive(self) -> None:
174174
return
175175

176176
logger.info(f"Child process [{process.pid}] died")
177-
del self.processes[idx]
178177
process = Process(self.config, self.target, self.sockets)
179178
process.start()
180-
self.processes.append(process)
179+
self.processes[idx] = process
181180

182181
def handle_signals(self) -> None:
183182
for sig in tuple(self.signal_queue):

0 commit comments

Comments
 (0)