I have a python script that starts a process using multiprocessing Process class. Inside that process I start a thread with an infinite loop, and I simulate an exception on the main thread by doing exit(1). I was expecting exit to kill the process, but it doesn't, and the main thread reports it as alive.
I have tried with both raising exception and calling exit, but none work. I have tried waiting for the process to finish by waiting for is_alive, and by calling join. But both have the same behavior.
from multiprocessing import Process
from threading import Thread
from time import sleep
def infinite_loop():
while True:
print("It's sleeping man")
sleep(1)
def start_infinite_thread():
run_thread = Thread(target=infinite_loop)
run_thread.start()
exit(1)
def test_multi():
x = Process(target=start_infinite_thread)
x.start()
sleep(5)
assert not x.is_alive()
I am expecting the process not to be alive, but the assert fails.