多线程(一)

yizhihongxing

一:什么是多线程

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

二:多线程优缺点

优点:

  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 -m

    当我们安装了 Python 后,我们可以在命令行中使用 Python 命令来运行 Python 脚本或者交互式的 Python 解释器。不过,如果我们的 Python 环境中同时安装了多个版本的 Python,那么直接使用 Python 命令运行脚本或者交互式解释器时,会默认使用系统环境变量 $PATH 中的 Python 版本。 为了避免这种情况,我们可以…

    python 2023年6月3日
    00
  • python获取指定时间段内特定规律的日期列表

    要获取指定时间段内特定规律的日期列表,可以使用Python标准库中的datetime和calendar模块。 首先,需要import datetime和calendar模块: import datetime import calendar 然后,定义一个函数date_generation(start_date, end_date, rule)来生成指定时间段…

    python 2023年6月2日
    00
  • pip报错“ModuleNotFoundError: No module named ‘pip._vendor.urllib3’”怎么处理?

    当使用pip安装Python包时,可能会遇到“ModuleNotFoundError: No module named ‘pip._vendor.urllib3’”错误。这个错误通常是由于以下原因之一引起的: pip版本过低:如果您的pip版本过低,则会出现此错误。在这种情况下,需要升级pip版本以解决问题。 urllib3模块缺失:如果您的urllib3模…

    python 2023年5月4日
    00
  • 新手常见6种的python报错及解决方法

    以下是“新手常见6种的Python报错及解决方法”的完整攻略,包含两个示例说明。 新手常见6种的Python报错及解决方法 在Python编程中,新手经常会遇各种报错。以下是6种常见的Python报错及其解决方法: 1. SyntaxError SyntaxError通常是由于代码中语法错误引起的。解决方法是检查代码中的语法错误,并进行修正。 2. Inde…

    python 2023年5月13日
    00
  • Python生成元组和字典的方法

    生成元组和字典是Python中非常常见的操作,下面是Python生成元组和字典的方法的完整攻略: 生成元组 直接生成元组 在Python中,可以使用小括号()来直接生成元组,用逗号隔开元素即可: tuple1 = (1, 2, 3) print(tuple1) 这会输出 (1, 2, 3),表示一个包含三个元素的元组。 使用内建函数生成元组 Python中有…

    python 2023年5月13日
    00
  • Python将列表数据写入文件(txt, csv,excel)

    下面是关于Python将列表数据写入文件(txt,csv,excel)的完整实例教程。 一、准备工作 在进行列表数据写入文件之前,需要先安装相关的库: 对于写入txt文件,可以使用python内置库open。 对于写入csv文件,需要安装csv库。 对于写入excel文件,需要安装openpyxl库。 在安装好相关库之后,我们就可以进行数据写入操作了。 二、…

    python 2023年5月13日
    00
  • python 实现dict转json并保存文件

    下面是详细的攻略: 1. dict转json Python原生自带了json库,可以很方便地进行dict和json之间的转换。具体的实现方法如下: import json # 将字典转换为JSON格式的字符串 data = {‘name’: ‘John’, ‘age’: 30, ‘city’: ‘New York’} json_str = json.dump…

    python 2023年6月3日
    00
  • Spring事件监听器之@EventListener原理分析

    下面我将详细讲解“Spring事件监听器之@EventListener原理分析”的完整攻略。 一、事件驱动模型 在讲解Spring的@EventListener原理之前,我们需要先掌握事件驱动模型的基本概念。 事件驱动模型是一种异步编程模型,通过在应用程序中抛出事件,以处理异步任务或响应用户输入。事件处理器通过监听事件并相应地响应事件来处理任务。事件和事件处…

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