wiso wrote:
I took a little code from google tech talk. It seems interesting, but it doesn't work:

import sys, urllib, os, threading, Queue

q = Queue.Queue()

class RetrWorker(threading.Thread):
    def run(self):
        self.setDaemon(True)
        def hook(*a): print (fn,a)
        while True:
            url = q.get()
            fn = os.path.basename(url)
            print url, "->", fn
            urllib.urlretrive(url, fn, hook)

for i in range(10): RetrWorker().start()
for url in sys.argv[1:]: q.put(url)

Exception in thread Thread-10:
Traceback (most recent call last):
  File "/usr/lib64/python2.6/threading.py", line 522, in __bootstrap_inner
    self.run()
  File "wget_m.py", line 7, in run
    self.setDaemon(True)
  File "/usr/lib64/python2.6/threading.py", line 690, in setDaemon
    self.daemon = daemonic
  File "/usr/lib64/python2.6/threading.py", line 683, in daemon
    raise RuntimeError("cannot set daemon status of active thread");
RuntimeError: cannot set daemon status of active thread

The traceback explains why.

self.setDaemon(True) is in the 'run' method, which is called when the
thread starts (becomes active), but you're not allowed to turn the
thread into a daemon after it has started.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to