import io, sys, multiprocessing class B(multiprocessing.Process): def __init__(self, glock, *args, **kwargs): multiprocessing.Process.__init__(self, *args, **kwargs) self.glock = glock def run(self): self.glock.acquire() import pdb pdb.set_trace() print("Hello, World!") self.glock.release() class A: def __init__(self): self.glock = multiprocessing.Lock() def run(self): jobs = [] for k in range(3): jobs.append(B(self.glock)) for j in jobs: j.start() for j in jobs: j.join() if __name__ == '__main__': A().run()