Threads and import

Peter Otten __peter__ at web.de
Wed May 28 19:54:17 EDT 2008


rsoh.woodhouse at googlemail.com wrote:

> Hi,
> 
> I'm trying to work out some strange (to me) behaviour that I see when
> running a python script in two different ways (I've inherited some
> code that needs to be maintained and integrated with another lump of
> code). The sample script is:
> 
> # Sample script, simply create a new thread and run a
> # regular expression match in it.
> import re
> 
> import threading
> class TestThread(threading.Thread):
> 
>     def run(self):
>         print('start')
>         try:
>             re.search('mmm', 'mmmm')
>         except Exception, e:
>             print e
>         print('finish')
> 
> tmpThread = TestThread()
> tmpThread.start()
> tmpThread.join()
> import time
> for i in range(10):
>     time.sleep(0.5)
>     print i
> 
> # end of sample script
> 
> Now if I run this using:
> 
> $ python ThreadTest.py
> 
> then it behaves as expected, ie an output like:
> 
> start
> finish
> 0
> 1
> 2
> ...
> 
> But if I run it as follows (how the inherited code was started):
> 
> $ python -c "import TestThread"
> 
> then I just get:
> 
> start
> 
> 
> I know how to get around the problem but could someone with more
> knowledge of how python works explain why this is the case?

You might be interested in reading

http://groups.google.com/group/comp.lang.python/browse_thread/thread/01dbc25e6d1a2662/dcf55f1475dc529f

Peter



More information about the Python-list mailing list