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实现扫描端口示例
Mar 29 Python
在Python中使用sort()方法进行排序的简单教程
May 21 Python
使用python检测主机存活端口及检查存活主机
Oct 12 Python
python扫描proxy并获取可用代理ip的实例
Aug 07 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 Python
Pycharm修改python路径过程图解
May 22 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生成带有雪花背景的验证码
2006/10/09 PHP
一个颜色轮换的简单例子
2006/10/09 PHP
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
如何用JavaScript实现功能齐全的单链表详解
2019/02/11 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
购买大码女装:Lane Bryant
2016/09/07 全球购物
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
Shell脚本如何向终端输出信息
2014/04/25 面试题
学生操行评语大全
2014/04/24 职场文书
设计专业自荐信
2014/06/19 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
主持人开场白台词
2015/05/29 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
PyMongo 查询数据的实现
2021/06/28 Python