Threads and import

rsoh.woodhouse at googlemail.com rsoh.woodhouse at googlemail.com
Wed May 28 15:14:44 EDT 2008


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?

Thanks,
Rowan



More information about the Python-list mailing list