from threading import local, Thread class LocalStuff(local): def __init__(self, stuff, foo=1): local.__init__(self) self.stuff = stuff self.foo = foo class TestThread(Thread): def __init__(self, stuff, name): Thread.__init__(self) self.stuff = stuff self.name = name def run(self): self.stuff.stuff = self.name print("TestThread.run stuff=%r\n" % self.stuff.stuff) if __name__ == "__main__": stuff = LocalStuff("main stuff") TestThread(stuff, name="thread-1").start() TestThread(stuff, name="thread-2").start() print("main stuff=%r\n" % stuff.stuff)