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 socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
Python面向对象编程中的类和对象学习教程
Mar 30 Python
Python三级目录展示的实现方法
Sep 28 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
基于windows下pip安装python模块时报错总结
Jun 12 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
python 伯努利分布详解
Feb 25 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
解决运行出现'dict' object has no attribute 'has_key'问题
Jul 15 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
Python合并pdf文件的工具
Jul 01 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
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
php实现无限级分类
2014/12/24 PHP
php一个解析字符串排列数组的方法
2015/05/12 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
jquery计算出left和top,让一个div水平垂直居中的简单实例
2016/07/13 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
Python进阶学习之特殊方法实例详析
2017/12/01 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
在django admin中添加自定义视图的例子
2019/07/26 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
动态设置django的model field的默认值操作步骤
2020/03/30 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
html5教程画矩形代码分享
2013/12/04 HTML / CSS
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
广州品高软件.net笔面试题目
2012/04/18 面试题
暑假实习求职信范文
2013/09/22 职场文书
教师实习的自我鉴定
2013/10/26 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
关于学习的决心书
2015/02/05 职场文书
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android