#!/usr/bin/env python import multiprocessing from multiprocessing.managers import BaseManager import multiprocessing.util import pprint import Queue as queue import threading address = ('127.0.0.1', 5000) # Server part class Server(BaseManager): pass def serve(): q = queue.Queue() Server.register('get_queue', callable=(lambda: q)) manager = Server(address=address) server = manager.get_server() thread = threading.Thread(target=server.serve_forever) thread.daemon = True thread.start() serve() # Client part class Client(BaseManager): pass Client.register('get_queue') manager = Client(address=address) manager.connect() for i in range(10): def run(): queue = manager.get_queue() queue.put('hello') thread = threading.Thread(target=run) thread.daemon = True thread.start() thread.join() pprint.pprint(multiprocessing.util._afterfork_registry.items())