Thread.__init__() not called

Joe Smith JoeSmith at bogusaddress.com
Wed Mar 15 03:50:50 EST 2000


Thanks.
Yes, the indentation got screwed up when I copied from the clipboard.  I think
that it converted tabs to space or something.  I thought that I had navigator
send both html and plain text.
Again, thanks.

David Fisher wrote:

> When you sub-class Thread you need to call its __init__ function inside
> yours.  Like so:
>
> class SimpleThread(threading.Thread):
>     def __init__(self,inOtherInfo):
>         self.theOtherInfo = inOtherInfo
>         print "setting other info to '" + self.theOtherInfo + "'"
>         threading.Thread.__init__()
> ...
>
> Also for future reference, if you post in html, a lot of people won't/can't
> read you post, and one space is not enough indent to read you code without
> extra effort.
>
> Good luck,
> David
>
> ----- Original Message -----
> From: Joe Smith
> Newsgroups: comp.lang.python
> To: python-list at python.org
> Sent: Tuesday, March 14, 2000 5:27 PM
> Subject: Thread.__init__() not called
>
> I am having the following output that I am a bit confused about.
> setting other info to 'other info'
> setting other info to 'other info'
> Traceback (innermost last):
>   File "D:\usr\karl\inproc\threadTest2.py", line 38, in ?
>     TestThreads(2)
>   File "D:\usr\karl\inproc\threadTest2.py", line 31, in TestThreads
>     thread.start()
>   File "d:\bin\Python1.5.2\Lib\threading.py", line 351, in start
>     assert self.__initialized, "Thread.__init__() not called"
> AssertionError: Thread.__init__() not called
> Here is a small test case the causes the problem:
> import time
> import threading
> def DoWork(numLoops, name, otherInfo):
>  i = 0;
>  while ( i < numLoops):
>   print "hello from thread ", name, ", number ", i, ", other info is ",
> otherInfo
>   time.sleep(1)
>   i = i + 1
>
> class SimpleThread(threading.Thread):
>  def __init__(self,inOtherInfo):
>   self.theOtherInfo = inOtherInfo
>   print "setting other info to '" + self.theOtherInfo + "'"
>  def run(self):
>   try:
>    DoWork(20, self.getName(), self.theOtherInfo)
>   finally:
>    pass
> def TestThreads(numThreads):
>  try:
>   o = "other info"
>   threads = []
>   for i in range(numThreads):
>    thread = SimpleThread(o)
>    threads.append(thread)
>   for thread in threads:
>    thread.start()
>   for thread in threads:
>    thread.join()
>   print "done testing loggin threads."
>  finally:
>   del o
> TestThreads(2)




More information about the Python-list mailing list