多线程实现多任务| 学习笔记

简介: 快速学习多线程实现多任务

开发者学堂课程Python入门 2020年版多线程实现多任务】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10465


多线程实现多任务

内容介绍

一.    多任务

二.    示例代码及注释

三.    说明

 

.多任务

1.多任务介绍

在现实生活中,有很多的场景中的事情是同时进行的,比如跳舞和唱歌是同时进行的。

Python 里执行多任务:多线程、多进程、多进程+多线程

在程序中,可以使用代码来模拟唱歌和跳舞的功能:

from time import sleep

def sing():

for i in range(3):

print("正在唱歌...%d"%i) sleep(1)

def dance():

for i in range(3):

phint("正在跳舞...%d"%i) sleep(1)

if __name_==_main__":

sing()#唱歌

dance()#跳舞

I print('我正在跳舞')

 

. 示例代码及注释

1.原始代码

def dance():

for i in range(50):

def sing():

for i in range(50):

print('我正在唱歌')

sing()#唱歌

dance()#跳舞

此时是先打印跳舞50次后打印唱歌50

想要两个动作同时做时可以用线程来执行

例如

t1=threading.Thread(target=dance)

写入线程后并启动线程可以看到运行结果是唱歌跳舞交替进行的但是并没有什么规律性可以加入time.sleep(0.2)在跳舞前歇息0.2秒运行可以发现打印出的唱歌与跳舞比较有规律。但是不能切换成想要的规律。

2.最终代码及注释

import threading,time

def dance():

for i in range(50):

time.sleep(0.2)//跳舞之前歇0.2

I print('我正在跳舞')

def sing():

for i in range(50):

print('我正在唱歌')

#多个任务同时执行

#Python里执行多任务:多线程、多进程、多进程+多线程

# dance()

# singe()

#target需要的是一个函数,用来指定线程需要执行的任务t1=threading.Thread(target=dance)

#创建了线程1

t2=threading.Thread(target=sing))

#创建了线程2

#启动线程

t1.start()

t2.start()


.说明

1.程序运行时至少有一个线程,这个线程叫主线程再在主线程上拉两个子线程,这两个子线程可以同时进行,但并不是真的同时进行,而是在同一时间段上只做一件事。

2.多任务思想为两个任务两个任务不是同时进行而是 cpu 交替进行,无法决定 cup的规律。

相关文章
|
1月前
|
消息中间件 前端开发 Java
美团面试:如何实现线程任务编排?
线程任务编排指的是对多个线程任务按照一定的逻辑顺序或条件进行组织和安排,以实现协同工作、顺序执行或并行执行的一种机制。 ## 1.线程任务编排 VS 线程通讯 有同学可能会想:那线程的任务编排是不是问的就是线程间通讯啊? 线程间通讯我知道了,它的实现方式总共有以下几种方式: 1. Object 类下的 wait()、notify() 和 notifyAll() 方法; 2. Condition 类下的 await()、signal() 和 signalAll() 方法; 3. LockSupport 类下的 park() 和 unpark() 方法。 但是,**线程通讯和线程的任务编排是
30 1
|
1月前
|
Java 数据库 Android开发
【专栏】Kotlin在Android开发中的多线程优化,包括线程池、协程的使用,任务分解、避免阻塞操作以及资源管理
【4月更文挑战第27天】本文探讨了Kotlin在Android开发中的多线程优化,包括线程池、协程的使用,任务分解、避免阻塞操作以及资源管理。通过案例分析展示了网络请求、图像处理和数据库操作的优化实践。同时,文章指出并发编程的挑战,如性能评估、调试及兼容性问题,并强调了多线程优化对提升应用性能的重要性。开发者应持续学习和探索新的优化策略,以适应移动应用市场的竞争需求。
|
1月前
|
算法 调度 索引
什么是多任务和线程?用线程写的一个udp同步聊天器
什么是多任务和线程?用线程写的一个udp同步聊天器
35 0
|
1月前
|
数据采集 存储 Java
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
|
1月前
|
存储 算法 Java
【C/C++ 线程池设计思路】 深入探索线程池设计:任务历史记录的高效管理策略
【C/C++ 线程池设计思路】 深入探索线程池设计:任务历史记录的高效管理策略
101 0
|
8天前
|
Java 程序员
Java多线程编程是指在一个进程中创建并运行多个线程,每个线程执行不同的任务,并行地工作,以达到提高效率的目的
【6月更文挑战第18天】Java多线程提升效率,通过synchronized关键字、Lock接口和原子变量实现同步互斥。synchronized控制共享资源访问,基于对象内置锁。Lock接口提供更灵活的锁管理,需手动解锁。原子变量类(如AtomicInteger)支持无锁的原子操作,减少性能影响。
18 3
|
1月前
|
NoSQL 网络协议 关系型数据库
redis-学习笔记(redis 单线程模型)
redis-学习笔记(redis 单线程模型)
31 3
|
1月前
|
安全 Java 编译器
多线程 (下) - 学习笔记2
多线程 (下) - 学习笔记
28 1
|
1月前
|
存储 算法 Java
多线程 (下) - 学习笔记1
多线程 (下) - 学习笔记
28 1
|
1月前
|
设计模式 安全 NoSQL
多线程 (上) - 学习笔记2
多线程 (上) - 学习笔记
25 1