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从ftp下载数据保存实例
Nov 20 Python
浅析Python中的序列化存储的方法
Apr 28 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
浅谈Python在pycharm中的调试(debug)
Nov 29 Python
对python 判断数字是否小于0的方法详解
Jan 26 Python
元组列表字典(莫烦python基础)
Apr 03 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
Aug 17 Python
python中设置超时跳过,超时退出的方式
Dec 13 Python
Python实现CNN的多通道输入实例
Jan 17 Python
Python ORM框架Peewee用法详解
Apr 29 Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 Python
python工具dtreeviz决策树可视化和模型可解释性
Mar 03 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
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
利用php来自动调用不同服务器上的flash
2006/10/09 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
js获取RadioButtonList的Value/Text及选中值等信息实现代码
2013/03/05 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
js读取本地文件的实例
2017/12/22 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
[03:54]DOTA2英雄梦之声_第06期_昆卡
2014/06/23 DOTA
ansible作为python模块库使用的方法实例
2017/01/17 Python
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
国贸专业个人求职信范文
2014/01/08 职场文书
关爱残疾人标语
2014/06/25 职场文书
公务员个人年终总结
2015/02/12 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
新人入职感言
2015/07/31 职场文书
《比的意义》教学反思
2016/02/18 职场文书