Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Threading change, 2.5.4 -> 2.6.1

2 views
Skip to first unread message

Gib Bogle

unread,
Jan 7, 2010, 5:30:53 PM1/7/10
to
The code below runs with Python 2.5.4, but gives the following error messages
with Python 2.6.1. What needs to be done to make it work? Thanks.

C:\Summer09\Tutorials>python url_queue.pyw
Traceback (most recent call last):
File "url_queue.pyw", line 3, in <module>
import threading
File "C:\Summer09\Tutorials\threading.py", line 9, in <module>
class ProcessingThread(threading.Thread, QtCore.QObject):
AttributeError: 'module' object has no attribute 'Thread'


url_queue.py
------------

#!/usr/bin/env python
import Queue
import threading
import urllib2
import time

hosts = ["http://yahoo.com", "http://google.com", "http://amazon.com",
"http://ibm.com", "http://apple.com"]

queue = Queue.Queue()

class ThreadUrl(threading.Thread):
#"""Threaded Url Grab"""
def __init__(self, queue,i):
threading.Thread.__init__(self)
self.queue = queue
self.num = i
print "Thread: ",self.num

def run(self):
while True:
#grabs host from queue
host = self.queue.get()
print "num, host: ",self.num,host
#grabs urls of hosts and prints first 1024 bytes of page
url = urllib2.urlopen(host)
print url.read(1024)

#signals to queue job is done
self.queue.task_done()

start = time.time()
def main():

#spawn a pool of threads, and pass them queue instance
for i in range(5):
t = ThreadUrl(queue,i)
t.setDaemon(True)
t.start()

#populate queue with data
for host in hosts:
queue.put(host)

#wait on the queue until everything has been processed
queue.join()

main()
print "Elapsed Time: %s" % (time.time() - start)

anon

unread,
Jan 7, 2010, 5:55:40 PM1/7/10
to
Gib Bogle wrote:
> The code below runs with Python 2.5.4, but gives the following error
> messages with Python 2.6.1. What needs to be done to make it work?
> Thanks.
>
> C:\Summer09\Tutorials>python url_queue.pyw
> Traceback (most recent call last):
> File "url_queue.pyw", line 3, in <module>
> import threading
> File "C:\Summer09\Tutorials\threading.py", line 9, in <module>
> class ProcessingThread(threading.Thread, QtCore.QObject):
> AttributeError: 'module' object has no attribute 'Thread'
>

Nothing to do with the version of python

You have a file called threading.py in C:\Summer09\Tutorials (the
same folder as url_queue.pyw). The line 'import threading' is
finding this module before python's threading module.

Rename this file and you should be fine.

MRAB

unread,
Jan 7, 2010, 6:01:52 PM1/7/10
to pytho...@python.org
Gib Bogle wrote:
> The code below runs with Python 2.5.4, but gives the following error
> messages with Python 2.6.1. What needs to be done to make it work?
> Thanks.
>
> C:\Summer09\Tutorials>python url_queue.pyw
> Traceback (most recent call last):
> File "url_queue.pyw", line 3, in <module>
> import threading
> File "C:\Summer09\Tutorials\threading.py", line 9, in <module>
> class ProcessingThread(threading.Thread, QtCore.QObject):
> AttributeError: 'module' object has no attribute 'Thread'
>
[snip]
url_queue.pyw is trying to import Python's "threading" module, but it's
finding the threading.py script in your "Tutorials" folder first.

Renaming your tutorial script to something other than "threading.py".

Gib Bogle

unread,
Jan 7, 2010, 8:14:59 PM1/7/10
to

Thanks very much to you both. It's actually not in my folder, it is
(presumably) in my student's folder (I'm the one using 2.5.4, she has 2.6.1 and
thought this could be the problem.)

Hans Mulder

unread,
Jan 8, 2010, 4:13:50 PM1/8/10
to

Keep in mind that if there's a threading.pyc in C:\Summer09\Tutorials,
you have to rename (or delete) that one as well.

Hope this helps,

-- HansM

0 new messages