第一章 1.20 多线程基础

一个应用程序在运行时就是一个进程,一个进程默认只有一个主线程,也可以有多个线程,同时执行不同的任务;本次课程主要是实现如何让进程可以进行多线程工作

一个进程就像一个工厂,多个进程就像工厂例的工人,每个工人之间的工作相互之间不影响

让一个进程多线程工作有两种实现方式:
①.直接导入treading模块种的Tread类并创建子线程对象
②.导入treading模块种的Tread类,创建一个Tread的子类,并用这个子类创建子线程对象

一. 在进程种创建Tread类的对象

1. 创建线程对象 - 子线程

线程对象 = Thread(target=函数, args=元组)
说明:
target - 函数,需要在子线程中执行的任务(会在子线程中调用)
args - target对应的函数在调用的时候传的参数

2. 让子线程执行子线程中的任务

线程对象.start()
在子线程中调用target对用的函数,并且将args中的元素作为参数

比如在一个进程中模拟下载电影:

from treading import Tread
from datetime import datetime
import time

def download(self, movie_name)
    print('%s开始下载了,开始时间是%s' % (movie_name, datetime.time()))
    time.sleep(5)
    print('%s下载完成了,完成时间是%s' % (movie_name, datetime.time()))

# 创建线程对象 - 子线程
t1 = Tread(target=download, args=('暮光之城'))
t2 = Tread(target=download, args=('两只老虎'))
t3 = Tread(target=download, args=('卧虎藏龙'))

# 让子线程执行子线程中的任务
t1.start()
t2.start()
t3.start()

二. 在进程种创建Tread类的子类的对象

还是下载电影的例子:

from treading import Tread
from datetime import datetime
import time

class DownloadTread(Tread): # 创建Tread的子类
    def __init__(self, mvoie_name) # 创建子类的对象属性
    super().__init__() # 继承父类的属性
    self.movie_name = movie_name

    # run方法是在子线程中自动调用的,除了self之外不能有其他的参数
    def run(self) -> None:
        print('%s开始下载,开始时间是:%s' % (self.movie_name, datetime.now()))
        time.sleep(5)
        print('%s下载结束,结束时间是:%s' % (self.movie_name, datetime.now()))

t1 = DownloadTead('暮光之城')
t2 = DownloadTead('两只老虎')
t3 = DownloadTead('卧虎藏龙')

t1.start
t3.start
t2.start

join的用法
线程对象.join()
其他代码

这儿的其他代码会在线程对象中的任务执行完后才执行

原文地址:https://www.cnblogs.com/anjhon/p/11963304.html

时间: 2024-10-19 10:46:46

第一章 1.20 多线程基础的相关文章

《Linux Shell脚本攻略》 笔记 第一章:Shell起步基础

<Linux Shell脚本攻略> 笔记 第一章:Shell起步基础 1.变量:在bash中,每一个变量的值都是字符串.无论你给变量赋值时,有没有使用引号,值都会以字符串的形式存储. 2.var=value; //赋值操作 var = value: //相等操作 3.获取字符串的长度 [[email protected] ~]$ var=yang [[email protected] ~]$ length=${#var} [[email protected] ~]$ echo $length

【信息资源管理】第一章:信息资源管理基础

导读: 信息琢磨不定,你感觉到它却不能很好理解它,只有很好的理解它才能更好的去感受 它. 花了一点时间对第一章进行了详读,顿时感觉文科生的优势出来了,啊,强大的抽象 理解力,开个玩笑.言归正传,第一章就是介绍了什么是"化".什么是信息.什么是信息 资源.什么信息资源管理.都是些概念性的东西,需要大量的深入脑髓的理解工作. 自己学习完对整章进行了细致的总结,基本上所有的重点都囊括了.画了思维导图进 行宏观理解.基本上好好看这篇博客可以节省半个小时+回答第一章课后练习.值得一 看. 知识点

第一章动态网页开发基础

第一章:动态网页开发基础  动态网页:是指在服务器端运行的,使用程序语言设计的交互式网页,它们会根据某种条件的变化,返回不同的网页内容 动态网页需要使用服务器端的脚本语言,例如:JSP技术就是使用Java+HTML 动态网页的优势: 1:交互性:       网页会根据用户的要求和选择而动态改变和显示内容 2:自动更新:       无须改变页面代码,便会自动生成新的页面内容,可以大大节省工作量 3:随机性:     当不同的时间.不同的人访问同一网址时会产生不同的页面效果      例如:普通

第一章、shell脚本基础

shell的作用:人和机器交互的工具-->其实是一个程序. shell里比较好用的程序是bash 默认情况下几乎所有的linux系统默认的shell都是bash ==== c语言为什么要编译.c语言是人认识的语言,根据某种编码进行翻译叫编译. shell脚本编程的优势. 查看当前shell [[email protected] ~]$ echo $SHELL /bin/bash [[email protected] ~]$  shell课程体系 Shell脚本编程 Shell基础 变量的使用 算

使用JSP/Server技术开发新闻发布系统第一章动态网页开发基础

      一:为什么需要动态网页    由于静态网页的内容是固定的,不能提供个性化和定制化得服务,使用动态网页可真正地与用户实现互动. 二:什么是动态网页  ①:动态网页是指在服务器端运行的,使用程序语言设计的交互网页,她们会根据某种条件的变化返回不同的网页内容.  ②动态网页需要使用服务器脚本语言. 三:动态网页的优势: ①        交互性:即网页会根据用户的要求和选择而动态改变和显示内容. ②        自动更新:即无時须改变页面代码,便会自动生成新的页面内容,可以大大节省工作量

第一章:HTML5的基础

HTML5基础 1.DoctYpe声明 <!DCTYPE html>必须放在第一行. <title> <title> 百度</title> <meta> <meta charset="UTF-8"/> <h1></h1>------<h6></h6> 提供了六级标签,所有标题字体加粗.<h1>最大<h6>最小 <p></p&g

第一章---动态网页开发基础

动态网页开发基础 什么是动态网页? 误区: 初学者一般认为动态网页,就是会动的网页,实际上不是这样的. 动态网页: 是指在服务器端进行的,使用程序语言设计的交互式网页,它们会 根据某种条件的变化,返回不同的网页内容. 动态网页的优势: 1.交互性:即网页会根据用户的要求和选择而动态改变和显示内容 2.自动更新:即无须改变页面代码,便会自动生成新的页面内容,可以节省工作量 3.随机性:即当不同的时间,不同的人访问同一网址时会产生不同的页面效果 为什么学习B/S架构技术? 在学习B/S架构前,先了解

第一章 计算机专业英语基础知识

1.1 计算机专业英语的特点 :清晰.精练.严密.准确 1.1.1 用词和语法的特点 用词:专业术语多,缩略词汇多且都仍在扩充. 语法:被动语态为主体,常用非谓语动词,名词化结构和从句等. 1.1.2 It--句型结构 It is + 名词 + 从句 It is +形容词 + 从句 It is + 过去分词 + 从句 It is + 介词短语 + 从句 It is + 不及物动词 + 从句 1.1.3 专业文献的特征 1. 客观--常用被动语态和一般现在时 2. 精练--单词要少,导致了非限定动

jsp第一章 动态网页开发基础

动态网站可以实现交互功能,如用户注册.信息发布.产品展示.订单管理等等: 动态网页并不是独立存在于服务器的网页文件,而是浏览器发出请求时才反馈网页: 动态网页中包含有服务器端脚本,所以页面文件名常以asp.jsp.php等为后缀.但也可以使用URL静态化技术,使网页后缀显示为HTML.所以不能以页面文件的后缀作为判断网站的动态和静态的唯一标准. 动态网页由于需要数据库处理,所以动态网站的访问速度大大减慢: 动态网页由于存在特殊代码,所以相比较静态网页,其对搜索引擎的友好程度相对要弱一些.   动