首页 > 编程语言 >python 多线程运行 串行或并行

python 多线程运行 串行或并行

时间:2024-01-27 14:33:37浏览次数:23  
标签:run Thread python start running threads time 串行 多线程

我们知道在 python 中运行多线程程序很简单,只需要几步,创建线程,start线程即可,下面简单说下多线程的串行或者并行的使用示例:

# -*- coding: utf-8 -*-
# @Time    : 2024-01-27 14:03

import threading
import time

def run(name:str) -> None:
    time.sleep(3)
    print("Thread: {} is running!\n".format(name))
    time.sleep(3)

def serial_threads_run():
    print("serial threads running...")
    start = time.time()
    for i in range(5):
        t = threading.Thread(target=run, args=("Thread-"+str(i),))
        t.start()
        t.join()
    print("time cost: {}s".format(round(time.time()-start, 2)))

def parallel_threads_run():
    print("parallel threads running...")
    start = time.time()
    threads_list = []
    for i in range(5):
        t = threading.Thread(target=run, args=("Thread-"+str(i),))
        threads_list.append(t)
        t.start()
    for t in threads_list:
        t.join()
    print("time cost: {}s".format(round(time.time() - start, 2)))

if __name__ == "__main__":
    serial_threads_run()
    # parallel_threads_run()

运行串行的结果:

serial threads running...
Thread: Thread-0 is running!

Thread: Thread-1 is running!

Thread: Thread-2 is running!

Thread: Thread-3 is running!

Thread: Thread-4 is running!

time cost: 30.03s

可以看到,我们在每个线程内让线程休眠6s,5个线程如果串行就是30s,外加其他的一些时间,所以在30s左右。

运行并行的结果:

parallel threads running...
Thread: Thread-3 is running!

Thread: Thread-1 is running!
Thread: Thread-0 is running!


Thread: Thread-2 is running!

Thread: Thread-4 is running!

time cost: 6.01s

可以看到总共就是6s左右,即使5个线程,一起并发也是并发在跑。

标签:run,Thread,python,start,running,threads,time,串行,多线程
From: https://www.cnblogs.com/davis12/p/17991402

相关文章

  • Python手相识别教程15指纹(斗和簸箕)
    15指纹指纹图案在胎儿发育的前18周内形成,并在人的一生中保持不变。每个人的指纹都是独一无二的,但可分为三种基本模式:环状(斗)、弓状(属于箕)和轮状(属于箕)。这些图案是个性特征的标志。俗语:“一斗穷,二斗富,三斗四斗卖豆腐,五斗六斗开当铺,七斗八斗坐着走,九斗十斗享清福。”实际不太准确!......
  • 在 Python 的 `glob` 模块中,文件名的大小写敏感性取决于你的操作系统。在 Unix 和 Lin
    在Python的`glob`模块中,文件名的大小写敏感性取决于你的操作系统。在Unix和Linux系统中,`glob`是区分大小写的。然而,在Windows和MacOS中,`glob`是不区分大小写的。例如,如果你在Unix或Linux系统中运行以下代码:```pythonimportglobfiles=glob.glob('*.xlsx')......
  • 多线程简单介绍
    线程:是操作系统能够进行运算调度的最小单位。它被包含在进程中,是进程中实际运作单位进程:进程是程序的基本执行实体,一个程序就是一个进程简单理解线程:应用软件中相互独立,可以同时运行的功能有了多线程,就可以让程序同时做多件事线程的生命周期完整的线程状态New(新建状态)->......
  • 多线程sleep、yield、wait、join方法的使用和区别
    使用和介绍sleep方法sleep方法的官方注释(翻译后):/***根据系统计时器和调度程序的精度和准确性,使当前执行的线程休眠(暂时停止执行)指定的毫秒数。线程不会失去任何监视器的所有权(不释放锁)。**@parammillis以毫秒为单位的睡眠时间长度*@throws......
  • python第三节:Str字符串类型(9)
    str.swapcase()返回原字符串的副本,其中大写字符转换为小写,小写转换为大写。注意:s.swapcase().swapcase()==s 并不一定为真值。例子:arg2='spaciousworldUKUS'arg3='你好spaciousworldUKUS'arg4='你好#¥56helloWORLd'print(arg2.swapcase())print(arg3.swap......
  • 快乐学Python,DataFrame的基本操作
    在上一篇文章中,我们了解了如何使用pandas的函数来从多种数据源:csv、excel和html网页。其中不管是哪一种数据读取的方式,最终返回的都是一个DataFrame对象。对于DataFrame对象,我们只是简单将其打印出来,这一篇我们来学习围绕DataFrame的基本操作(添加行、列,删除行、列,排序......
  • python 13
    1.集合(set)集合是一个无序,可变,不允许数据重复的容器。1.1定义v1={11,22,33,"alex"}无序,无法通过索引取值。可变,可以添加和删除元素。v1={11,22,33,44}v1.add(55)print(v1)#{33,11,44,22,55}不允许数据重复v1={11,22,33,44}v1.add(22)print(v1)#{33,......
  • python--pyQt 基础框架代码 pyside6
    importsysfromPySide6importQtWidgets,QtCore,QtGuifromPySide6.QtCoreimportQt,QRectfromPySide6.QtGuiimportQColor,QEnterEventfromPySide6.QtWidgetsimportQApplication,QDialog,QMainWindow,QGraphicsDropShadowEffectimportyiqi_uiclassMain......
  • Python模块和包
    目录Python模块和包Python模块概述模块搜索路径import语句import<module_name>from<module_name>import<name(s)>from<module_name>importas<alt_name>import<module_name>as<alt_name>dir()函数将模块作为脚本执行重新加载模块Python包包初始化从包不import*子包结......
  • Python_numpy-增加以及修改维度
    gradio组件输入组件-输出组件输入输出组件 多输入和多输出组件gr.State是一个不可见的组件,目的是在后台存储一些变量方便访问和交互BlockcomponentsTextbox:interactiveinteractive=TrueEventlistenerchange()e......