多线程(一)

一:什么是多线程

线程是操作系统能够进行运算调度的最小单位;它被包含在进程之中,是进程中的实际运作单位。
多线程,是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。
简单来说:线程是程序中一个单一的顺序控制流程;而多线程就是在单个程序中同时运行多个线程来完成不同的工作。
多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。多线程是在同一时间需要完成多项任务的时候实现的。

二:多线程优缺点

优点:

  1. 使用线程可以把占据时间长的程序中的任务放到后台去处理
  2. 程序的运行效率可能会提高
  3. 可以分别设置各个任务的优先级以优化性能
  4. 可以让同一个程序的不同部分并发执行,释放一些珍贵的资源如内存占用等

缺点

  1. 更多的线程需要更多的内存空间
  2. 因为多线程需要开辟内存,而且线程切换需要时间因此会很消耗系统内存
  3. 由于多个线程之间存在共享数据,因此容易出现线程死锁的情况
  4. 多线程需要协调和管理,需要CPU时间跟踪线程,线程的终止会对程序产生影响

三:python threading 模块

threading模块是python的内置库,所以无需用pip去下载直接调用就行

import threading

注意这里的Thread是大写,因为python对字母的大小写十分敏感

四:多线程开发

1.创建一个Thread对象,并封装线程

t = threading.Thread(target=calculate,args=(n,))

第一个参数是线程函数变量,第二个参数args是一个数组变量参数,如果只传递一个值,就只需要n, 如果需要传递多个参数,那么还可以继续传递下去其他的参数,其中的逗号不能少,元组中只包含一个元素时,需要在元素后面添加逗号

2.常见方法

t.start() #线程准备,开始执行
t.join() #等待线程任务结束,在向下执行

3.线程的简单运用(节省时间)

一个线程(代码依次执行)

```plaintext
import time

def calculate(n):
    for x in n:
        time.sleep(1)
        print('除法',x%2)

def calculate2(n):
    for x in n:
        time.sleep(1)
        print('乘法',x*2)
n=[1,2,3,4,5,6,7,8]
start=time.time()
calculate(n)
print()
calculate2(n)
end=time.time()
print(end-start)

单线程运行俩函数所需的时间为16.106837511062622s

多线程

import threading
import time

def calculate(n):
    for x in n:
        time.sleep(1)
        print('除法',x%2)

def calculate2(n):
    for x in n:
        time.sleep(1)
        print('乘法',x*2)

n=[1,2,3,4,5,6,7,8]
start=time.time()
t1 = threading.Thread(target=calculate,args=(n,))
t2 = threading.Thread(target=calculate2,args=(n,))
t1.start()
time.sleep(2)
t2.start()
t1.join()
t2.join()
end = time.time()
print(end-start)

多线程所需时间为10.068055391311646s

五:总结:

以上是多线程中最最最基础的东西
相比之下多线程的效率要比单线程的效率要高,也比较节约时间

原文链接:https://www.cnblogs.com/yangsanhuo/p/17343673.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:多线程(一) - Python技术站

(0)
上一篇 2023年4月22日
下一篇 2023年4月22日

相关文章

  • Python学习之加密模块使用详解

    Python学习之加密模块使用详解 在网络传输过程中,数据常常会被窃取、篡改或者伪造,为了保护数据的安全性,我们通常需要对数据进行加密。Python作为一门强大的编程语言,其提供了多种加密模块供我们使用。本文将详细讲解Python中常用的加密模块,包括MD5、SHA1、AES和RSA等,同时提供两个示例进行说明。 MD5加密 MD5是一种常用的哈希算法,它可…

    python 2023年6月2日
    00
  • python上下文管理器异常问题解决方法

    首先,让我们理解一下什么是Python上下文管理器。上下文管理器是Python语言中的一种协议,用于在代码块执行开始前,执行一些必要的设置和在代码块执行结束后,执行一些清理工作。Python中,一般使用with语句来实现上下文管理器,with语句可以帮助我们更加优雅、安全地处理资源。 然而,当我们在自定义自己的上下文管理器时,可能会出现一些异常。这时,我们需…

    python 2023年5月13日
    00
  • Python openpyxl模块实现excel读写操作

    下面是 Python openpyxl 模块实现 Excel 读写操作的完整实例教程: 什么是 openpyxl 模块 openpyxl 是一个开源的 Python 模块,用于操作 Excel 文件(包括 xlsx/xlsm/xltx/xltm 文件),提供了读取 Excel 文件和创建/修改 Excel 文件的接口。 安装 openpyxl 模块 在使用 …

    python 2023年5月13日
    00
  • 用Python解数独的方法示例

    下面我将详细讲解如何用Python解数独。 步骤一:输入数独问题 首先,需要使用Python代码输入数独问题。可以使用一个9×9的二维数组来表示数独,其中用数字表示知道的数,用0表示需要填写的空格。 例如,如果要解下面这个数独问题: 5 3 0 | 0 7 0 | 0 0 0 6 0 0 | 1 9 5 | 0 0 0 0 9 8 | 0 0 0 | 0 6…

    python 2023年5月14日
    00
  • PyCharm 安装与使用配置教程(windows,mac通用)

    PyCharm 安装与使用配置教程 简介 PyCharm 是 Python 开发中最受欢迎的集成开发环境(IDE)之一。它是 JetBrains 开发的高度自定义的 Python 全能性 IDE,旨在提高开发者的生产力和代码质量。 本教程将向您展示如何在 Windows 和 macOS 操作系统上安装和配置 PyCharm。 步骤 1:下载 PyCharm …

    python 2023年5月30日
    00
  • 解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题

    如果在使用PyCharm时导入numpy包或使用numpy时报错,可能是numpy包安装不正确或版本不兼容的原因。下面我们来详细讲解如何解决这个问题。 问题描述 在使用PyCharm时导入numpy包或使用numpy时,可能遇到以下错误信息: RuntimeError:ThecurrentNumpyinstallation(‘D:\\python3.6\\l…

    python 2023年5月13日
    00
  • 在Python中使用NumPy在点x的列表中评估赫米特级数

    评估赫米特级数是一个经典的数学算法,Python中的NumPy库提供了方便的工具来实现这个算法。下面是使用NumPy在点x的列表中评估赫米特级数的步骤: 步骤1:导入NumPy库和相关依赖 首先需要导入NumPy库以及其他必要的Python标准库和第三方库,例如: import numpy as np from math import factorial, …

    python-answer 2023年3月25日
    00
  • python 将数据保存为excel的xls格式(实例讲解)

    下面是“Python将数据保存为Excel的xls格式(实例讲解)”的完整实例教程。 什么是xls格式 xls格式是Microsoft Excel电子表格文件的标准文件格式。它是一种二进制文件格式,包含格式、布局和其他电子表格内容。在Python中,我们可以使用第三方库来创建和保存xls文件。 1. 安装依赖库 在Python中,我们可以使用Python的o…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部