How come I can't get get my background thread to output anything?

Carl Banks pavlovevidence at gmail.com
Fri Apr 10 01:21:05 EDT 2009


On Apr 9, 8:36 pm, grocery_stocker <cdal... at gmail.com> wrote:
> On Apr 9, 7:01 pm, grocery_stocker <cdal... at gmail.com> wrote:
>
>
>
> > On Apr 9, 6:36 pm, grocery_stocker <cdal... at gmail.com> wrote:
>
> > > Given the following....
>
> > > #!/usr/local/bin/python
>
> > > import os
> > > import time
> > > import thread
>
> > > def domsg(string, sleeptime, *args):
> > >     print "%s was here", string
> > >     #os.system('tel %s test' % person);
> > >     #time.sleep(sleeptime)
>
> > > def buildlist():
> > >     out = 1
> > >     persons = []
>
> > >     while(out != 0):
> > >         pern = raw_input("Enter person to message:")
> > >         if (len(pern)):
> > >             persons.append(pern)
> > >         else:
> > >             out = 0
> > >     return persons
>
> > > if __name__ == "__main__":
> > >     #buildlist()
> > >     thread.start_new_thread(domsg, ("person",2))
>
> > > I get....
> > > m-net% ./massmsg.py
> > > m-net%
>
> > > I was expecting to see
>
> > > person  was here
>
>  Never mind. When i add while 1:pass like in the following
>
> thread.start_new_thread(domsg, ("person",2))
> while 1 : pass
>
> the code works as expected

Whoa, there, chief, you don't want to do that.  It'll cause a busy
loop and run one of your CPUs to 100%.

Instead, use the theading module and the join method:

import threading
thr = threading.Thread(target=domsg,args=("person",2))
thr.start()

# do whatever in the main thread

thr.join()


Carl Banks



More information about the Python-list mailing list