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转码问题的解决方法
Oct 07 Python
python中django框架通过正则搜索页面上email地址的方法
Mar 21 Python
Python字符串切片操作知识详解
Mar 28 Python
Python 通过pip安装Django详细介绍
Apr 28 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
Jun 14 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
Python3内置模块之base64编解码方法详解
Jul 13 Python
Python3的高阶函数map,reduce,filter的示例详解
Jul 23 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
解决python虚拟环境切换无效的问题
Apr 30 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
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
PHP使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
2018/02/24 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
vue监听input标签的value值方法
2018/08/27 Javascript
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
Python实现SMTP发送邮件详细教程
2021/03/02 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
管道维修工岗位职责
2013/12/27 职场文书
工作个人的自我评价
2014/01/14 职场文书
应届生自荐信范文
2014/02/21 职场文书
离退休人员聘用协议书
2014/11/24 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
Python函数式编程中itertools模块详解
2021/09/15 Python