simple Thread question

JCM josh at work.com
Tue Aug 3 16:32:22 EDT 2004


You should override the run method, but call thread.start() to kick
the execution off in a separate thread.  If you call thread.run(),
you're just running your code in the same thread.

adeger <adeger at netlibrary.com> wrote:
> Having trouble with my first forays into threads.  Basically, the
> threads don't seem to be working in parallel (or you might say are
> blocking).  I've boiled my problems to the following short code block
> and ensuing output.  Seems like the output should be all interleaved
> and of course it's not.  Running Python 2.2 from ActiveState on
> Windows XP (also doesn't work on Windows 2000).

> Thanks in advance!
> adeger

> #====================================================

> import threading

> class TestThr(threading.Thread):
> 	def __init__(self):
> 		threading.Thread.__init__(self)

> 	def run(self, name):
> 		import time
> 		for i in range(1,11):
> 			print 'thread ', name, ' instance ', str(i)
> 			time.sleep(1)

> threads = []
> for inst in ('a', 'b', 'c'):
> 	thread = TestThr()
> 	thread.run(inst)
> 	threads.append(thread)

> # output below
> thread  a  instance  1
> thread  a  instance  2
> thread  a  instance  3
> thread  a  instance  4
> thread  a  instance  5
> thread  a  instance  6
> thread  a  instance  7
> thread  a  instance  8
> thread  a  instance  9
> thread  a  instance  10
> thread  b  instance  1
> thread  b  instance  2
> thread  b  instance  3
> thread  b  instance  4
> thread  b  instance  5
> thread  b  instance  6
> thread  b  instance  7
> thread  b  instance  8
> thread  b  instance  9
> thread  b  instance  10
> thread  c  instance  1
> thread  c  instance  2
> thread  c  instance  3
> thread  c  instance  4
> thread  c  instance  5
> thread  c  instance  6
> thread  c  instance  7
> thread  c  instance  8
> thread  c  instance  9
> thread  c  instance  10



More information about the Python-list mailing list