Forkserver VS fork

from multiprocessing import Process, Queue, set_start_method

def p():
    ...

set_start_method("forkserver", force=True)

_queue = Queue()

if __name__ == "__main__":
    Process(target=p).start()

I’d like to understand the main difference between the fork and forkserver start methods in Python’s multiprocessing module.

The code above works fine with fork, but when I switch to forkserver, I get this warning at shutdown:
/home/coyote/.local/share/uv/python/cpython-3.11.15-linux-x86_64-gnu/lib/python3.11/multiprocessing/resource_tracker.py:254: UserWarning: resource_tracker: There appear to be 3 leaked semaphore objects to clean up at shutdown
warnings.warn('resource_tracker: There appear to be %d '
How can I resolve this warning?

2 Likes