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