python多线程并发及测试框架案例


Posted in Python onOctober 15, 2019

这篇文章主要介绍了python多线程并发及测试框架案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1、循环创建多个线程,并通过循环启动执行

import threading
from datetime import *
from time import sleep

# 单线程执行
def test():
 print('hello world')

t = threading.Thread(target=test)
t.start()

# 多线程执行
def test_01():
 sleep(1)
 x = 0
 while x == 0:  # 设置一个死循环
  print(datetime.now())    # 获取当前系统时间

def looptest():
 '''
 循环20次执行 test_o1()函数
 :return:
 '''
 for i in range(20):
  test_01()

def thd():
 '''
 创建并执行多个线程
 需求:并发执行50次 test_o1()函数
 说明:把50的并发拆成25个线程组,每个线程再循环20次执行 test_o1()函数,这样在启动下一个线程的时候,
 上一个线程已经在循环了,以此类推,当启动第25个线程的时候,可能已经执行了200次的t est_o1()函数,
 这样就可以大大减少并发的时间差异
 :return:
 '''
 Threads = []
 for i in range(25):
  th = threading.Thread(target=looptest)
  Threads.append(th)
  '''
  守护线程:主线程执行完毕之后,会等待子线程全部执行完毕,才会关闭结束程序
  必须加在start()之前,默认为 false
  '''
  th.setDaemon(True)
 for th in Threads:
  th.start()
 for th in Threads:
  '''
  阻塞线程:等主线程执行完毕之后再关闭所有子线程
  必须加在start()之后
  可以通过join()的timeout参数来完美解决相互等待的问题,子线程告诉主线程让其等待0.04秒,
  0.04秒之内子线程完成,主线程就继续往下执行,0.04秒之后如果子线程还未完成,主线程也会
  继续往下执行,执行完成之后关闭子线程
  '''
  th.join(0.04)

if __name__=="__main__":
 print('start')
 thd()
 print('end')

2、并发测试框架

# 并发测试框架
THREAD_NUM = 1
ONE_WORKER_NUM = 1
def test():
 pass   # 测试代码

def working():
 global ONE_WORKER_NUM
 for i in range(0, ONE_WORKER_NUM):
  test()
  
def t():
 global THREAD_NUM
 Threads = []
 for i in range(THREAD_NUM):
  t = threading.Thread(target=working,name='T'+str(i))
  t.setDaemon(True)
  Threads.append(t)
 for t in Threads:
  t.start()
 for t in Threads:
  t.join()
  
if __name__=="__main__":
 t()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
Python模拟用户登录验证
Sep 11 Python
python实现朴素贝叶斯分类器
Mar 28 Python
15行Python代码实现网易云热门歌单实例教程
Mar 10 Python
python学生管理系统学习笔记
Mar 19 Python
python面试题小结附答案实例代码
Apr 11 Python
python 实现二维列表转置
Dec 02 Python
wxpython自定义下拉列表框过程图解
Feb 14 Python
简单了解Python多态与属性运行原理
Jun 15 Python
浅析python函数式编程
Sep 26 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 Python
Python 实现Mac 屏幕截图详解
Oct 05 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 #Python
浅析PEP572: 海象运算符
Oct 15 #Python
Python 导入文件过程图解
Oct 15 #Python
Python3.8对可迭代解包的改进及用法详解
Oct 15 #Python
Python 3.8正式发布,来尝鲜这些新特性吧
Oct 15 #Python
Python3安装pip工具的详细步骤
Oct 14 #Python
python区分不同数据类型的方法
Oct 14 #Python
You might like
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
基于PHP Web开发MVC框架的Smarty使用说明
2013/04/19 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
js实现的网页颜色代码表全集
2007/07/17 Javascript
js原型链原理看图说明
2012/07/07 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
2017/03/08 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
2017/06/09 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
js单页hash路由原理与应用实战详解
2017/08/14 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
python 反向输出字符串的方法
2018/07/16 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
中科软测试工程师面试题
2012/06/16 面试题
顶碗少年教学反思
2014/02/21 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
施工质量承诺书范文
2014/05/30 职场文书
个人年底工作总结
2015/03/10 职场文书
资金申请报告范文
2015/05/14 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
spring boot中nativeQuery的用法
2021/07/26 Java/Android