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 相关文章推荐
Cpy和Python的效率对比
Mar 20 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
Apr 27 Python
python利用smtplib实现QQ邮箱发送邮件
May 20 Python
Python根据当前日期取去年同星期日期
Apr 14 Python
Python猜数字算法题详解
Mar 01 Python
基于Python爬取爱奇艺资源过程解析
Mar 02 Python
Python定时任务APScheduler原理及实例解析
May 30 Python
python调用私有属性的方法总结
Jul 24 Python
Python性能分析工具py-spy原理用法解析
Jul 27 Python
Python tkinter之Bind(绑定事件)的使用示例
Feb 05 Python
实例讲解Python中sys.argv[]的用法
Jun 03 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文件操作之小型留言本实例
2015/06/20 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
PHP转换文本框内容为HTML格式的方法
2016/07/20 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
详解PHP PDO简单教程
2019/05/28 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
举例讲解Python中is和id的用法
2015/04/03 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
django模板语法学习之include示例详解
2017/12/17 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
儿科护理实习自我鉴定
2013/09/19 职场文书
杠杆的科学教学反思
2014/01/10 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
防汛通知
2015/04/25 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书
详解MySQL的半同步
2021/04/22 MySQL