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