[python-win32] Regarding Threads and locals()

Tim Roberts timr at probo.com
Thu Mar 20 18:22:49 CET 2008


Tejovathi P wrote:
> Hi all,
>
> I have a GUI applicaion(along with threads). When the run button is 
> pressed in the GUI a separate thread starts( Thread is created using 
> beginthreadex) and does the
> required activity.
> Now, while the thread is being executed, i want the locals() present 
> inside the thread's run function to be avaialbe in the GUI class from 
> where the thread class is being created

Why do you use execfile for this?  That seems very odd to me.  Also, why 
use beginthreadex instead of the native Thread module?

Adding threading doesn't really change this problem.  Just think about 
how you'd solve it without threading: by creating a class and using import:

test.py:

class Handler():
  def run():
    self.i = 1
    self.j = 2
    self.k = 4
    while(10000):
        print i
        print j
        print k
        self.i = 1+1
        self.j += 2
        self.k += 3

main.py:

    def func(self):
        import temp
        self.thread = temp.Handler()
        self.thread.run()

Now, the rest of the GUI can examine self.thread.i, self.thread.j, and 
self.thread.k.  There are locking issues here, but that's left as an 
exercise for the reader.

That's probably not the perfect solution, but it gives you the general 
direction.

-- 
Tim Roberts, timr at probo.com
Providenza & Boekelheide, Inc.



More information about the python-win32 mailing list