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深入学习之对象的属性
Aug 31 Python
Python验证企业工商注册码
Oct 25 Python
剖析Python的Twisted框架的核心特性
May 25 Python
python实现汉诺塔方法汇总
Jul 25 Python
Python 搭建Web站点之Web服务器与Web框架
Nov 06 Python
pytorch对可变长度序列的处理方法详解
Dec 08 Python
Python检查ping终端的方法
Jan 26 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
Jun 18 Python
pytorch 预训练层的使用方法
Aug 20 Python
python使用nibabel和sitk读取保存nii.gz文件实例
Jul 01 Python
Python基于字典实现switch case函数调用
Jul 22 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 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
第二节 对象模型 [2]
2006/10/09 PHP
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
2020/09/13 PHP
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
JS生成随机打乱数组的方法示例
2017/12/23 Javascript
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
了解Javascript中函数作为对象的魅力
2019/06/19 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
python超时重新请求解决方案
2019/10/21 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
深入解析HTML5使用SVG图像时的viewBox属性用法
2015/09/02 HTML / CSS
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
股东合作协议书
2014/09/12 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
五年级下册复习计划
2015/01/19 职场文书
原告离婚代理词
2015/05/23 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python