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模拟登录百度贴吧(百度贴吧登录)实例
Dec 18 Python
Python中转换角度为弧度的radians()方法
May 18 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
Python的argparse库使用详解
Oct 09 Python
在PyCharm下打包*.py程序成.exe的方法
Nov 29 Python
Python如何调用JS文件中的函数
Aug 16 Python
Django中使用haystack+whoosh实现搜索功能
Oct 08 Python
Python基本类型的连接组合和互相转换方式(13种)
Dec 16 Python
python cv2.resize函数high和width注意事项说明
Jul 05 Python
python regex库实例用法总结
Jan 03 Python
Python爬虫数据的分类及json数据使用小结
Mar 29 Python
拒绝盗图!教你怎么用python给图片加水印
Jun 04 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数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
JS画5角星方法介绍
2013/09/17 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
JS实现仿京东淘宝竖排二级导航
2014/12/08 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
基于jQuery实现数字滚动效果
2017/01/16 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
python基础教程之基本内置数据类型介绍
2014/02/20 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
红旗团支部事迹材料
2014/01/27 职场文书
报告会主持词
2014/04/02 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL