前言 : 最近对Python赶感兴趣了, 原因是公司需求对接第三方的业务比较多,所以寻找测试资源很麻烦,每天都在各种做重复的工作。
所以就想到了用python写个小脚本来找,
为什么是Python,主要还是它和 shell 的语法 比较相似, 在linux上比较友好 。
最近正自学到多线程这块,就在这里写下来,给自己加深点影响 放个链接 python 的学习网站 Python基础学习
这里版本是Python3+ ,本人之前学的是java,所以会那java做对比了 。。。
Python3 通过两个标准库 _thread 和 threading 提供对线程的支持。 _thread 提供了低级别的、原始的线程以及一个简单的锁,它相比于 threading 模块的功能还是比较有限的。 threading 模块除了包含 _thread 模块中的所有方法外,还提供的其他方法
这里用的是 threading 模块
'''使用 threading 模块创建线程'''
import threading
import time
#建一个线程测试类,继承 threading.Thread
class ThreadingTest(threading.Thread):
##成员变量
threadName='' #线程名称
name = '' # 姓名
age =0 # 年龄
de=0 # 休眠时间 , 单位秒
# 该类的构造方法
def __init__(self,tn,n,a,de):
threading.Thread.__init__(self) # 父类的构造,不同java的语法, 这里如果不写,会报错
self.threadName=tn
self.name=n
self.age=a
self.de=de
#run 方法 类似java 的 run()
def run(self):
#定义一个字典
li = {'tn':self.threadName, 'n':self.name, 'a':self.age,'de':self.de}
execue(li)
def execue(li):
''' 处理函数入口 '''
count = 0
while count<5:
time.sleep(li['de'])
count += 1
con = "枪手{0},等待{1}秒--开始瞄准--名称:{2}--年龄:{3} ==== 开枪 第{4}次 \n"
print(con.format(li['tn'],li['de'],li['n'],li['a'],count))
# 获取类实例
tt1 = ThreadingTest("老周","张三",34,2)
tt2 = ThreadingTest("老L","李四",18,4)
# 启动线程
tt1.start()
tt2.start()
# 等待线程执行完毕
tt1.join()
tt2.join()
print("枪毙执行完成 .., 为了死的彻底,多开了几枪不要在意啦. 埋尸的事后面再说 。。。")
print('话说这里让我想到了星爷演的007 中枪毙的桥段, 毁三观啊 。。。')
执行结果 :
手Thread-1,等待2秒--开始预判--名称:张三--年龄:34 ====>执行死刑 第1次
枪手Thread-2,等待4秒--开始预判--名称:李四--年龄:18 ====>执行死刑 第1次
枪手Thread-1,等待2秒--开始预判--名称:张三--年龄:34 ====>执行死刑 第2次
枪手Thread-1,等待2秒--开始预判--名称:张三--年龄:34 ====>执行死刑 第3次
枪手Thread-2,等待4秒--开始预判--名称:李四--年龄:18 ====>执行死刑 第2次
枪手Thread-1,等待2秒--开始预判--名称:张三--年龄:34 ====>执行死刑 第4次
枪手Thread-1,等待2秒--开始预判--名称:张三--年龄:34 ====>执行死刑 第5次
枪手Thread-2,等待4秒--开始预判--名称:李四--年龄:18 ====>执行死刑 第3次
枪手Thread-2,等待4秒--开始预判--名称:李四--年龄:18 ====>执行死刑 第4次
枪手Thread-2,等待4秒--开始预判--名称:李四--年龄:18 ====>执行死刑 第5次
枪毙执行完成 .., 为了死的彻底,多开了几枪不要在意啦. 埋尸的事后面再说
很快天就到第二天了, 我每天的工作就是 枪毙人或动物。今天天气很好,我要上班去了
ps: 为什么会有动物呢,人总要赚点外快的嘛,不要在意这些细节了
... .
老L 是我的搭档,为什么叫他老L呢, 因为他被绿了,大家都懂的, 领导今天找我们谈话了,说让我们一个一个的执行,不要一窝蜂的就干完了,就下班了,说这样影响单位的形象,好吧,领导说的都是对的,那我们只好 照着做咯 。。,今天还是两个死刑犯: 王五,赵六; 据说一个是 人贩子, 一个是奸杀的 ,真是最该万死啊, 对这种人一般不会手软的,
嘿嘿嘿 ....,不说了,干活了
ps : 关键字
#定义一个锁
threadLock = threading.Lock()
threadLock.acquire() #获得锁
# do something
threadLock.release() #释放锁
看完整代码 :
'''使用 threading 模块创建线程'''
import threading
import time
#建一个线程测试类,继承 threading.Thread
class ThreadingTest(threading.Thread):
##成员变量
threadName='' #线程名称
name = '' # 姓名
age =0 # 年龄
de=0 # 休眠时间 , 单位秒
# 该类的构造方法
def __init__(self,tn,n,a,de):
threading.Thread.__init__(self) # 父类的构造,不同java的语法, 这里如果不写,会报错
self.threadName=tn
self.name=n
self.age=a
self.de=de
#run 方法 类似java 的 run()
def run(self):
#定义一个字典
li = {'tn':self.threadName, 'n':self.name, 'a':self.age,'de':self.de}
# acquire 和 release 类似 java Synchronized 关键字
threadLock.acquire() #获得锁
execue(li)
threadLock.release() #释放锁
def execue(li):
''' 处理函数入口 '''
count = 0
while count<5:
time.sleep(li['de'])
count += 1
con = "枪手{0},等待{1}秒--开始瞄准--名称:{2}--年龄:{3} ==== 开枪 第{4}次 \n"
print(con.format(li['tn'],li['de'],li['n'],li['a'],count))
#定义一个锁
threadLock = threading.Lock()
# 获取类实例
tt1 = ThreadingTest("老周","王五",33,2)
tt2 = ThreadingTest("老L","赵六",24,3)
# 启动线程
tt1.start()
tt2.start()
# 等待线程执行完毕
tt1.join()
tt2.join()
print("枪毙执行完成 .., 为了死的彻底,多开了几枪不要在意啦. 埋尸的事后面再说 。。。")
print('话说这里让我想到了星爷演的007 中枪毙的桥段, 毁三观啊 。。。')
看执行结果 :
枪手老周,等待2秒--开始瞄准--名称:王五--年龄:33 ==== 开枪 第1次
枪手老周,等待2秒--开始瞄准--名称:王五--年龄:33 ==== 开枪 第2次
枪手老周,等待2秒--开始瞄准--名称:王五--年龄:33 ==== 开枪 第3次
枪手老周,等待2秒--开始瞄准--名称:王五--年龄:33 ==== 开枪 第4次
枪手老周,等待2秒--开始瞄准--名称:王五--年龄:33 ==== 开枪 第5次
枪手老L,等待3秒--开始瞄准--名称:赵六--年龄:24 ==== 开枪 第1次
枪手老L,等待3秒--开始瞄准--名称:赵六--年龄:24 ==== 开枪 第2次
枪手老L,等待3秒--开始瞄准--名称:赵六--年龄:24 ==== 开枪 第3次
枪手老L,等待3秒--开始瞄准--名称:赵六--年龄:24 ==== 开枪 第4次
枪手老L,等待3秒--开始瞄准--名称:赵六--年龄:24 ==== 开枪 第5次
枪毙执行完成 .., 为了死的彻底,多开了几枪不要在意啦. 埋尸的事后面再说 。。。
话说这里让我想到了星爷演的007 中枪毙的桥段, 毁三观啊 。。。