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 性能优化技巧总结
Nov 01 Python
python制作爬虫爬取京东商品评论教程
Dec 16 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
使用python搭建服务器并实现Android端与之通信的方法
Jun 28 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
Aug 12 Python
Python Process多进程实现过程
Oct 22 Python
Python namedtuple命名元组实现过程解析
Jan 08 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
PyInstaller的安装和使用的详细步骤
Jun 02 Python
关于python scrapy中添加cookie踩坑记录
Nov 17 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 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过程中的一些注意点的总结
2013/10/25 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
jQuery解决input超多的表单提交
2015/08/10 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
2016/12/12 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
vue实现图片上传功能
2020/05/28 Javascript
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
numpy中的高维数组转置实例
2018/04/17 Python
python更改已存在excel文件的方法
2018/05/03 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
什么是抽象
2015/12/13 面试题
副董事长岗位职责
2014/04/02 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
军训个人总结
2015/03/03 职场文书
金陵十三钗观后感
2015/06/04 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
SQL注入详解及防范方法
2021/12/06 MySQL