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调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
May 09 Python
在Python中操作时间之mktime()方法的使用教程
May 22 Python
详解Django rest_framework实现RESTful API
May 24 Python
python通过tcp发送xml报文的方法
Dec 28 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
如何清空python的变量
Jul 05 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
Nov 30 Python
详细介绍python操作RabbitMq
Apr 12 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
无线电广播与收音机发展的历史回眸
2021/03/02 无线电
PHP n个不重复的随机数生成代码
2009/06/23 PHP
PHP抽象类 介绍
2012/06/13 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
django缓存配置的几种方法详解
2018/07/16 Python
Python实现将Excel转换成为image的方法
2018/10/23 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
Python实现代码块儿折叠
2020/04/15 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
大学生毕业自荐信
2013/10/10 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
职务说明书范文
2014/05/07 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
通知的格式范文
2015/04/27 职场文书
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP