python 多线程笔记一

python thread,threading模块提供了对多线程的支持,不过通常我们使用threading模块来进行多线程编程。


多线程模块使用方法:
       1. 使用thread模块中的start_new_thread(function,元组参数[,字典参数])来执行函数,通常直接在python shell下执行。
        2. 继承 threading.Thread 类,覆盖 run方法。
 
以下举例说明两种用法:

方法1:

>>> import thread
>>>
>>> def run(num):
...     for i in range(num):
...             print i
...
>>>
... thread.start_new_thread(run,(10,))


 

方法2:

# -*- coding:utf-8 -*-
# 功能:多线程数值累加
# author:herong
# date:2013/4/29
import threading
import time

#######类定义#################################
class MyThread(threading.Thread):
	'''求合线程类'''
	def __init__(self,name,start,end):
		threading.Thread.__init__(self,name=name)
		self.__end = end
		self.__start = start
	def run(self):
		global glTotal
		global gThreadCnt
		sum = 0
		for i in range(self.__start,self.__end+1):
			sum+=i
		time.sleep(1)
		#获取锁
		gLock.acquire()
		try:
			glTotal+=sum
			gThreadCnt+=1
		finally:
			#释放锁
			gLock.release()
			#pass;
		print '#Thread-%s,(sum(%s-%s))=%s\n'%(self.getName(),self.__start,self.__end,sum)
		#time.sleep(2)

#################全局变量区############################
#总和
glTotal = 0
#控制变量
gThreadCnt  = 0
#锁对象
gLock = threading.RLock()
goThreadArray = []

#################执行代码块############################
step = 10
for i in range(10,100+1,step):
    t = MyThread(i/10,i-step+1,i)
    goThreadArray.append(t)

for i in goThreadArray:
    i.start()
    #i.join()

#for i in goThreadArray:
    #i.join()
	
while gThreadCnt < 10:
    print 'wait...\n'
    time.sleep(1)
    
print 'Total:',glTotal



输出结果:

E:\python\thread>python test2.py
wait...

#Thread-1,(sum(1-10))=55
#Thread-2,(sum(11-20))=155
wait...


#Thread-4,(sum(31-40))=355
#Thread-6,(sum(51-60))=555

#Thread-8,(sum(71-80))=755


#Thread-3,(sum(21-30))=255
#Thread-7,(sum(61-70))=655

#Thread-9,(sum(81-90))=855


#Thread-5,(sum(41-50))=455

#Thread-10,(sum(91-100))=955


Total: 5050

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值