美文网首页
python多线程基础

python多线程基础

作者: 聂小过 | 来源:发表于2018-12-12 13:35 被阅读0次
  • 多线程准备脚本test01
import unittest
from time import ctime, sleep
from random import randint

class Test01(unittest.TestCase):

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_01(self):
        print("test_01 start:",ctime())
        sleep(randint(1,8))
        print("test_01 end:",ctime())
  • 多线程准备脚本test02
import unittest
from time import ctime,sleep
from random import randint

class Test02(unittest.TestCase):

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_01(self):
        print("test_02 start:",ctime())
        sleep(randint(1,8))
        print("test_02 end:",ctime())
  • 多线程准备脚本test03
import unittest
from time import ctime,sleep
from random import randint

class Test03(unittest.TestCase):

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_01(self):
        print("test_03 start:",ctime())
        sleep(randint(1,8))
        print("test_03 end:",ctime())

  • 多线程准备脚本test04
import unittest
from time import ctime,sleep
from random import randint

class Test04(unittest.TestCase):

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_01(self):
        print("test_04 start:",ctime())
        sleep(randint(1,8))
        print("test_04 end:",ctime())

1.多线程demo

import unittest
import os
import threading
import time

# 获取到所有的符合规则的脚本
suite = unittest.TestLoader().discover(os.getcwd(), "test0*.py")
print(suite)
print(suite.countTestCases())
#解析所有的用例,并存到列表中
lst = []
for s in suite:
    for ss in s:
        for sss in ss:
            lst.append(sss)
print(len(lst))
#  
# #第一种方式:顺序执行
runer = unittest.TextTestRunner()
for l in lst:
    runer.run(l)
    
# 第二种方式:多线程方式执行
# 起3个线程,分别执行这5个脚本,但是分不够 
thread_num = 3
 
def groups(lst,thread_num):
    # 定义一个列表用于存放整个分组情况
    all_list = []
    # 根据线程数量初始化脚本列表
    for i in range(0,thread_num):
        all_list.append([])
    # 对列表进行浅复制
    tmp_list = lst.copy()
    # 循环进行脚本的分配
    while len(tmp_list) != 0:
        # 内层循环进行取值
        for i in range(0,thread_num):
            if len(tmp_list) > 0:
                temp = tmp_list[0]
                all_list[i].append(temp)
                tmp_list.remove(temp)
            else:
                break
#     # 返回分配好的脚本列表
    return all_list
# 
all_list = groups(lst, thread_num)
print(all_list)

# 定义可以运行suite列表的方法
def run_suite(suite_list):
    # 实例化一个运行器
    runner = unittest.TextTestRunner()
    # 循环执行列表中的脚本
    for suite in suite_list:
        runner.run(suite)
 
# 创建线程组池
threads_list = []
# 循环将分组脚本以多线程的方式实例化,并加入线程池中
for i in range(0,thread_num):
    thread = threading.Thread(target=run_suite,args=(all_list[i],))
    threads_list.append(thread)
 
# 循环运行整个线程池
print("测试开始时间:{}".format(time.strftime("%Y%m%d%H%M%S")))
for t in threads_list:
    t.start()
for t in threads_list:
    t.join()
print("测试结束时间:{}".format(time.strftime("%Y%m%d%H%M%S")))
     

相关文章

  • Python多线程编程——多线程编程中的加锁机制

    如果大家对Python中的多线程编程不是很了解,推荐大家阅读之前的两篇文章:Python多线程编程——多线程基础介...

  • Python 3中的多线程

    Python 3的多线程 Python 3的多线程模块threading在旧版_thread模块基础上进行了更高层...

  • Python多线程编程——创建线程的两个方法

    之前的一篇文章:Python多线程编程——多线程基础介绍,主要介绍了线程的基本知识,以及使用Python创建线程的...

  • python多线程

    python基础之多线程锁机制 GIL(全局解释器锁) GIL并不是Python的特性,它是在实现Python解析...

  • 大师兄的Python学习笔记(十一): 时间模块time,dat

    大师兄的Python学习笔记(十): 多进程和多线程大师兄的Python学习笔记(十二): 常用高级函数 一、基础...

  • Python基础 - 多线程

    多线程 每个程序在运行的时候(进程)系统都会为这个进程创建一个线程,这个线程叫主线程。程序员自己创建的线程叫子线程...

  • python基础 多线程

    低级模块:_thread高级模块:threading(一般使用这个)启动一个线程就是把一个函数传入并创建Threa...

  • python多线程基础

    多线程准备脚本test01 多线程准备脚本test02 多线程准备脚本test03 多线程准备脚本test04 1...

  • 18年学习技术列表

    后端 语言 java 继续夯实基础,注重于多线程,函数式编程,并发集合相关类。 Python scrapy爬虫框架...

  • 2018-08-04(15.5)多线程

    python基础语法(15.5) 多线程 初步了解多线程 (个人理解)电脑的cpu一般情况下一次只能给一个进程提供...

网友评论

      本文标题:python多线程基础

      本文链接:https://www.haomeiwen.com/subject/iapuhqtx.html