主页 > Python > python之多线程thread

python之多线程thread

2012 年 08 月 28 日 没有评论
# -*- coding:utf-8 -*-
#!/usr/bin/python
# Filename: thread.py

#导入threading模块
import threading

T = threading.Thread

#继承threading模块中的Thread类
class MyThread(T):
	name = None
	def __init__(self, name = None):
		T.__init__(self)
		self.name = name

	def run(self):
		print self.name

def start():
	for i in range(1,10):
		#生存Thread对象,并且启动该线程
		MyThread('thread_'+str(i)).start()


if __name__ == '__main__':
	start()

print '#'*30

import thread, time

def timer(i = None):
	print 'hello-'+str(i)
	# thread.exit()

def test():
	for i in range(1,10):
		thread.start_new_thread(timer, (i,))
		#另一种使用threading创建线程的方式:
		#threading.Thread(timer,(i,)).start()

if __name__ == '__main__':
	test()
	time.sleep(2)

print '*'*30

#如果不加锁导致最终的count结果不是10000*10,而代码以下由于是使用了锁,
#从而保证了同一个时间只能有一个线程修改count的值,所以最终结果是10000*10.
count = 0
lock = thread.allocate_lock()
def qt():
	global count, lock

	lock.acquire()

	for x in range(0,1000):
		count += 1

	lock.release()

for i in range(0,10):
	thread.start_new_thread(qt, ())

time.sleep(3)
print count

因此在python创建一个线程的方法有3种:
1、使用thread模块的start_new_thread()方法来创建,如:thread.start_new_thread(timer, (i,))
2、使用threading模块的Thread类来创建,如:threading.Thread(timer,(i,)).start()
3、自定义类继承threading类来实现创建,如上面一个例子

发表评论

电子邮件地址不会被公开。 必填项已用*标注


*

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>