Threading change, 2.5.4 -> 2.6.1

G

Gib Bogle

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)
 
A

anon

Gib said:
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.
 
M

MRAB

Gib said:
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".
 
G

Gib Bogle

MRAB said:
Gib said:
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".

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.)
 
H

Hans Mulder

anon said:
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.

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,913
Messages
2,570,027
Members
46,419
Latest member
businessfunding

Latest Threads

Top