已经学习python一段时间了,突然看到网上有说用python做并发测试的,在网上看了一些博客,感觉不明觉厉(完全不知道原理)。
后来在 点击打开链接 跟着案例运行了好几次,感觉就是一个大写的蒙逼啊!!!完全看不懂/(ㄒoㄒ)/~~。
还好网上的大神很多,接着搜索了几个好的博客结合‘菜鸟教程’的案例,终于看到了一点曙光O(∩_∩)O~~。
好了,说了这么多,总结一下: 使用Threading模块创建线程,直接从threading.Thread继承,然后重写__init__方法和run方法
run(): 用以表示线程活动的方法
start():启动线程活动
join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生
在使用join的时候一定要引用线程,如:
threads = [] for i in range(5):
# 创建新线程(调用方法)
t = ThreadImpl()
# 开启线程
t.start()
# 把线程加入threads中
threads.append(t)
for k in threads:
# 等待线程完成
k.join()
看下面的代码:
# coding=utf-8
import threading
import time
class ThreadImpl(threading.Thread):# 继承父类threading.Thread
def __init__(self):
threading.Thread.__init__(self)
# 重写 run方法
def run(self):
self.test()
# 要测试的逻辑代码
def test(self):
print "test"+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
x = 0
for i in range(10):
x += i*i
time.sleep(1)
print 'x='+str(x) + '; ' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
if __name__ == '__main__':
# 定义线程数
thread_count = 100
# 定义线程集
threads = []
for i in range(5):
# 创建新线程
t = ThreadImpl()
# 开启线程
t.start()
# 把线程加入threads中
threads.append(t)
for t in threads:
# 等待线程完成
t.join()
print 'end:'+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())