could ildg wrote: > I have 2 thead instances, > A and B, > In A's run method, if I call B.Method(), it will be executed in thead A, > but I want B.Method() to be executed in B's thread. > That's to say, I want to tell Thead B to do B's stuff in B's thread, > kinda like PostMessage in win32. > Can I do it in python? > How? > Thank you in advance.
Here is a really simple, stupid example of what I think you're trying to do. You probably want to use a Queue between your threads. ########################## #!/usr/bin/python import threading import Queue class A(threading.Thread): def __init__(self, q): self.q = q threading.Thread.__init__(self) def run(self): for i in range(10): print "Thread A putting \"something\" onto the queue" self.q.put("something") self.q.put("stop") class B(threading.Thread): def __init__(self, q): self.q = q self.proceed = True threading.Thread.__init__(self) def do_something(self): print "Thread B doing something" def do_stop(self): print "Thread B should stop soon" self.proceed = False def run(self): while self.proceed: print "Thread B pulling sommething off of the queue" item = q.get() print "Thread B got %s" % item getattr(self, "do_" + str(item))() if __name__ == "__main__": q = Queue.Queue() a = A(q) a.start() b = B(q) b.start() a.join() b.join() ############################## HTH, - jmj -- http://mail.python.org/mailman/listinfo/python-list