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 相关文章推荐
wxPython定时器wx.Timer简单应用实例
Jun 03 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
Nov 16 Python
python+tkinter编写电脑桌面放大镜程序实例代码
Jan 16 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
python实现Virginia无密钥解密
Mar 20 Python
Python面向对象程序设计多继承和多态用法示例
Apr 08 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
python 实现快速生成连续、随机字母列表
Nov 28 Python
python3 实现口罩抽签的功能
Mar 11 Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 Python
解决python存数据库速度太慢的问题
Apr 23 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
支持php4、php5的mysql数据库操作类
2008/01/10 PHP
php 结果集的分页实现代码
2009/03/10 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
js字符编码函数区别分析
2008/06/05 Javascript
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
DIV菜单层实现代码
2010/11/19 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
python3获取当前文件的上一级目录实例
2018/04/26 Python
Python 监测文件是否更新的方法
2019/06/10 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
Python编写单元测试代码实例
2020/09/10 Python
施工资料员的岗位职责
2013/12/22 职场文书
医院实习接收函
2014/01/12 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
初一新生军训方案
2014/05/22 职场文书
旅游文化节策划方案
2014/06/06 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
2016入党心得体会范文
2016/01/06 职场文书
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js
Vue深入理解插槽slot的使用
2022/08/05 Vue.js