Alan wrote:
Hi there,
That's another try to get help about this issue I am facing. To help you
to help me here goes a simple example. This is a very simplification of
a very complex code.
-------------------- thread_ping.py -------------------- begin
import time
import sys
import atexit
from threading import Thread
class testit(Thread):
def __init__ (self,ip):
Thread.__init__(self)
self.ip = ip
self.status = 0
def run(self):
pingaling = os.popen("ping -q -c2 "+self.ip,"r")
while 1:
line = pingaling.readline()
if not line: break
igot = re.findall(testit.lifeline,line)
if igot:
self.status = int(igot[0])
def goodbye(t, report):
print 'Goodbye'
print "Status from ",t.ip,"is",report[t.status]
testit.lifeline = re.compile(r"(\d) packets received")
report = ("No response","Partial Response","Alive")
ip = "209.85.227.104" # www.google.com <http://www.google.com> # try
with a failing IP if you want the test to last a bit longer
t = testit(ip)
atexit.register(goodbye, t, report)
t.start()
exit()
-------------------- thread_ping.py -------------------- end
If one runs like:
amadeus[2579]:~/TMP% time python2.6 thread_ping.py
Goodbye
Status from 209.85.227.104 is Alive
python2.6 thread_ping.py 0.02s user 0.02s system 3% cpu 1.056 total
(i.e., python2.6 wait till the thread finishes and leave... I don't want
this behaviour, see below)
and
amadeus[2580]:~/TMP% time python2.5 thread_ping.py
Goodbye
Status from 209.85.227.104 is No response
python2.5 thread_ping.py 0.01s user 0.01s system 90% cpu 0.030 total
(i.e., python2.5 promptly quit, as desired)
Could someone tell me how to get python2.6 to have the same behaviour I
see with python2.5 for this example code?
Any hint would be very much appreciated indeed.
Many thanks in advance.
The script won't exit while there are non-daemon threads running. You
can make a thread a daemon by setting its 'daemon' attribute to True
before starting the thread. If you want the script to be backwards
compatible with Python 2.5 then use the 'setDaemon' method instead.
I don't know why the script exited in Python 2.5 even though a
non-daemon thread was still running.
--
http://mail.python.org/mailman/listinfo/python-list