iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 多线程threading模
  • 638
分享到

Python 多线程threading模

多线程Pythonthreading 2023-01-31 05:01:14 638人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

        首先,我们在了解多线程时需要理解的就是什么是多线程,按照官方的解释就是:多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。    在我自学到这里的时候,通过会在想进程和线程到底是有

    

    首先,我们在了解多线程时需要理解的就是什么是多线程,按照官方的解释就是:多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。

    在我自学到这里的时候,通过会在想进程和线程到底是有什么区别,我的理解就是:

    进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,一个进程可以包含多个线程。


    下面就以简单的例子来加强我们对python 线程的理解。


  1. 默认情况下,我们在没有启动线程的时候,可以看一下程序总的运行时间,应该是每个函数的时间之和,以下程序应该是10S的时间。

# -*- coding: utf-8  -*-
from time import sleep,ctime
import threading
from time import sleep,ctime
import threading
def music(fun):
    for i in range(2):
        print 'music %s'  % fun,ctime()
        sleep(2.5)   #这里以每首歌为例,放完需要5s时间 
    
def move(fun):
    for i in range(2):
        print 'move!! %s' % fun,ctime()
        sleep(2.5)
if __name__ == '__main__':
    music('小苹果')
    move('变形金刚')
    
print ctime()  #打印最后程序结束时间

程序运行结果:


wKioL1O0NkSj7ayJAADja85cGjY035.jpg


2. 启动多线程后,再来看一下总的时间,由之前的10s缩短到5s的时间。

# -*- coding: gbk -*-
''' 加入线程'''
import time
import threading
def t1(name,x): 
    print "start: %s" % time.ctime()
    for i in range(x):
        print i,name
        time.sleep(1)   #每执行一次程序停顿1s
        
#创建线程
threads = []
t = threading.Thread(target=t1,args=('分手仁师',5),)
t2 = threading.Thread(target=t1,args=('美丽心情',5),)

#将线程加入到线程组
threads.append(t)
threads.append(t2)
#启动线程
for i in threads:
    i.start()
i.join()
#主进程
print "end: %s" % time.ctime()


运行结果:

wKiom1O0MnmSpdALAADu1GH3TM8235.jpg


我们除了用多线程之外 ,Python 还提供了多进程模块,其原理都差不多,这里不再进行复述,咱们就看下实际的例子吧。

# -*- coding: gbk -*-
from time import sleep,ctime
import multiprocessing
def super_player(file,time):
    for i in range(2):
        print "Start playing: %s! %s" %(file,ctime())
        sleep(time)
        
#播放文件与播放时长
list = {'love.mp3':2, 'a_fan_da.mp4':5 , 'i_and_you.mp3':4}
threads = []
files = range(len(list))
#创建多进程
for file,time in list.items():
    t = multiprocessing.Process(target=super_player,args=(file,time))
    threads.append(t)
    
if __name__ == '__main__':
    for i in files:
        threads[i].start()
    for i in files:
        threads[i].join()
#主进程
print ctime()


通过以上例子我们大概可以知道启用多线程程序的好处,一个是多线程技术使程序的响应速度更快 ,改善程序结构。再一个,某些特殊场景体验要好。

(例如:1个主页 里面有30个模块 30个模块分别读取数据库的数据这个页面 如果不用多线程,你开打以后,会看到白页,10秒以后 所有模块一瞬间看到

而多线程,打开页面的第一秒 页面就打开了 这时候 页面上只有3个模块 然后 每过1秒 漫漫的 都显示出来)


以上是我个人对多线程的浅薄理解。


--结束END--

本文标题: Python 多线程threading模

本文链接: https://www.lsjlt.com/news/188608.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 多线程threading模
            首先,我们在了解多线程时需要理解的就是什么是多线程,按照官方的解释就是:多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。    在我自学到这里的时候,通过会在想进程和线程到底是有...
    99+
    2023-01-31
    多线程 Python threading
  • Python 多线程之 threading 模块
    在之前的文章中,我们已经介绍了 Python 通过 _thread 和 threading 模块提供了对多线程的支持,threading 模块兼具了 _thread 模块的现有功能,又扩展了一些新的功能,具有十分丰富的线程操作功能,本节我们...
    99+
    2023-09-16
    python 开发语言 java
  • python多线程threading
    本文通过 4个example 介绍python中多线程package —— threading的常用用法, 包括调用多线程, 同步队列类Queue, Ctrl+c结束多线程。 example1. 调用10个线程, 分别打印0~...
    99+
    2023-01-31
    多线程 python threading
  • python threading多线程p
    #!/usr/bin/env python                                                                                       #_*_coding:u...
    99+
    2023-01-31
    多线程 python threading
  • Python多线程编程之threading模块详解
    目录一、介绍二、Python如何创建线程2.1 方法一:2.2 方法二:三、线程的用法3.1 确定当前的线程3.2 守护线程3.3 控制资源访问一、介绍 线程是什么?线程有啥用?线程...
    99+
    2024-04-02
  • Python多线程threading用法
    Python里面经常会用到多线程,即所有的方法在同一时间开始运行,而不是按顺序一个一 个运行。所用到的模块为threading,下面详解threading用法。 我们写三个方法,one、two、three并正常运行。 这里只截图了one()...
    99+
    2023-01-31
    多线程 Python threading
  • Python 多线程之threading 模块的使用
    目录简介 创建线程 构造器方式 继承方式 守护线程 线程本地数据 定时器 简介 Python 通过 _thread 和 threading 模块提供了对多线程的支持,threadi...
    99+
    2024-04-02
  • python 包之 threading 多线程
    目录一、创建一个线程二、创建多个线程三、线程同步四、递归锁五、信号锁一、创建一个线程 通过实例化threading.Thread类创建线程 import threading def...
    99+
    2024-04-02
  • python3--threading模块(线程)
    上章节内容总结:队列    队列:先进先出,数据进程安全    管道+锁 可实现队列    生产者消费者模型:解决数据供需不平衡管道    双向通信 数据进程不...
    99+
    2023-01-30
    线程 模块 threading
  • python 多线程threading程序详情
    CPython implementation detail: 在 CPython 中,由于存在全局解释器锁, 同一时刻只有一个线程可以执行 Python 代码(虽...
    99+
    2024-04-02
  • python 通过threading多线
    #!/usr/bin/env python#coding=utf-8import paramikoimport time,datetime,threadingdef ssh(ip,user,passwd,command):    ssh =...
    99+
    2023-01-31
    python threading 多线
  • Python线程之threading
    线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。进程是资源分配的最小单位,线程是CPU调度的最小单位,每一个进程中至少有一个线程,线程可与属于同一进程的其它线...
    99+
    2023-01-31
    线程 Python threading
  • Python线程threading(Thread类)
    目录前言Python创建线程 threading调用Thread类的构造器创建线程继承Thread类创建线程类Thread join()用法前言 几乎所有的操作系统都支持同时运行多个...
    99+
    2024-04-02
  • python threading超线程使
    在工作过程中中,将内容过程中经常用的内容片段珍藏起来,下面内容段是关于python threading超线程使用简单范例的内容,希望能对小伙伴们有较大帮助。 # encoding: UTF-8 import threading # 方法1...
    99+
    2023-01-31
    超线程 python threading
  • Python 常用模块threading和Thread模块之线程池
    目录1. 池的概念2. 自定义线程池3. 使用Python内置线程池4. 池的其他操作1. 池的概念 主线程: 相当于生产者,只管向线程池提交任务。 并不关心线程池是如何执行任务的...
    99+
    2024-04-02
  • Python threading和Thread模块及线程的实现
    目录前言1. 线程1.1 线程模块1.1.1 Thread类1.2 创建线程1.2.1 实例Thread类法创建线程1.2.1 继承重写Thread类法创建线程1.3 Join &a...
    99+
    2024-04-02
  • Python常用模块之threading和Thread模块及线程通信
    目录1. 线程通信1.1 互斥锁1.2 线程间全局变量的共享1.3 共享内存间存在竞争问题1.4 使用锁来控制共享资源的访问分析此阶段,我们会发现进程和线程的痛点!!!2. 队列的基...
    99+
    2024-04-02
  • python中threading实现线程的示例分析
    小编给大家分享一下python中threading实现线程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!过程说明从Thread类构成子类。覆盖方法根据需...
    99+
    2023-06-20
  • python 多线程模块threadpo
      python实现线程池通常使用threading或thread模块来编写,现在已经有了threadpool模块来实现线程池。英文文档见:http://www.chrisarndt.de/projects/threadpool/中文文档见...
    99+
    2023-01-31
    多线程 模块 python
  • python中怎么实现threading线程同步
    小编给大家分享一下python中怎么实现threading线程同步,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!说明threading模块具有实现锁定的内置功能,允许同步线程。为了防止数据损坏或丢失,需要锁定来控制共享资源...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作