python多线程、多进程、协程笔记
import threading
import time
import multiprocessing
import asyncio movie_list = ['斗破.avi', '复仇者联盟.mp4', '斗罗大陆.rmvb']
music_list = ['七里香.mp3', '美人鱼.mp3', 'xxx.obi']
movie_format = ['avi', 'mp4', 'rmvb']
music_format = ['mp3'] def play(playlist):
for i in playlist:
if i.split('.')[1] in movie_format:
print('您现在正在收看:{}'.format(i))
time.sleep(2)
elif i.split('.')[1] in music_format:
print('您现在正在收听:{}'.format(i))
time.sleep(2)
else:
print('该文件格式不支持:{}'.format(i))
time.sleep(2) async def async_play(playlist):
for i in playlist:
if i.split('.')[1] in movie_format:
print('您现在正在收看:{}'.format(i))
await asyncio.sleep(2)
elif i.split('.')[1] in music_format:
print('您现在正在收听:{}'.format(i))
await asyncio.sleep(2)
else:
print('该文件格式不支持:{}'.format(i))
await asyncio.sleep(2) class MyThread(threading.Thread):
def __init__(self, playlist):
super().__init__()
self.playlist = playlist def run(self):
play(self.playlist) # 普通的多线程运行
def thread_run():
t1 = threading.Thread(target=play, args=(movie_list, ))
t2 = threading.Thread(target=play, args=(music_list, ))
t1.start()
t2.start() # 重写多线程
def class_thread_run():
t3 = MyThread(movie_list)
t4 = MyThread(music_list)
t3.start()
t4.start() # 多进程
def multi_run():
t5 = multiprocessing.Process(target=play, args=(movie_list, ))
t6 = multiprocessing.Process(target=play, args=(music_list, ))
t5.start()
t6.start() # 协程
def loop_run():
loop = asyncio.get_event_loop()
task = [async_play(movie_list), async_play(music_list)]
loop.run_until_complete(asyncio.wait(task))
loop.close() if __name__ == '__main__':
# thread_run()
# class_thread_run()
# multi_run()
loop_run()
由于python全局解释锁(Global Interpreter Lock)的存在,使得python的多线程并不能真正达到提高工作效率的目的,所以在日常工作中推荐使用多进程+协程的方式。
python多线程、多进程、协程笔记的更多相关文章
- Python自动化 【第十篇】:Python进阶-多进程/协程/事件驱动与Select\Poll\Epoll异步IO
本节内容: 多进程 协程 事件驱动与Select\Poll\Epoll异步IO 1. 多进程 启动多个进程 进程中启进程 父进程与子进程 进程间通信 不同进程间内存是不共享的,要想实现两个进程间 ...
- python中多进程+协程的使用以及为什么要用它
前面讲了为什么python里推荐用多进程而不是多线程,但是多进程也有其自己的限制:相比线程更加笨重.切换耗时更长,并且在python的多进程下,进程数量不推荐超过CPU核心数(一个进程只有一个GIL, ...
- 多线程 多进程 协程 Queue(爬虫代码)
快速理解多进程与多线程以及协程的使用场合和特点 首先我们来了解下python中的进程,线程以及协程! 从计算机硬件角度: 计算机的核心是CPU,承担了所有的计算任务.一个CPU,在一个时间切片里只能运 ...
- 也说性能测试,顺便说python的多进程+多线程、协程
最近需要一个web系统进行接口性能测试,这里顺便说一下性能测试的步骤吧,大概如下 一.分析接口频率 根据系统的复杂程度,接口的数量有多有少,应该优先对那些频率高,数据库操作频繁的接口进行性能测试,所以 ...
- python 多进程,多线程,协程
在我们实际编码中,会遇到一些并行的任务,因为单个任务无法最大限度的使用计算机资源.使用并行任务,可以提高代码效率,最大限度的发挥计算机的性能.python实现并行任务可以有多进程,多线程,协程等方式. ...
- 深入浅析python中的多进程、多线程、协程
深入浅析python中的多进程.多线程.协程 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源 ...
- python进阶(二) 多进程+协程
我们大多数的时候使用多线程,以及多进程,但是python中由于GIL全局解释器锁的原因,python的多线程并没有真的实现 实际上,python在执行多线程的时候,是通过GIL锁,进行上下文切换线程执 ...
- Cpython解释器下实现并发编程——多进程、多线程、协程、IO模型
一.背景知识 进程即正在执行的一个过程.进程是对正在运行的程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都 ...
- Python并发编程二(多线程、协程、IO模型)
1.python并发编程之多线程(理论) 1.1线程概念 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程(流水线的工作需要电源,电源就相当于 ...
随机推荐
- 打开新窗口(window.open)关闭窗口(window.close)
打开新窗口(window.open) open() 方法可以查找一个已经存在或者新建的浏览器窗口. 语法: window.open([URL], [窗口名称], [参数字符串]) 参数说明: URL: ...
- 3.MapReduce原理和Yarn
1.MapReduce原理 2.MapReduce执行时间 3.MapReduce开发 4.Yarn
- Docker安装ElasticSearch 版本7.1.1
一.Docker 部署 ElasticSearch 1.从仓库中查找所有ElasticSearch的镜像 [root@iZwz99dhxbd6xwly17tb3bZ app]# docker sear ...
- 排查python内存泄露中几个工具的使用
本文主要介绍3个工具:pdb,objgraph,以及pympler. 1.pdb pdb是专门用于python代码调试,模仿gdb. 使用pdb可以查看堆栈,打印变量等. 这里介绍的是命令行下的pdb ...
- LC 274. H-Index
Given an array of citations (each citation is a non-negative integer) of a researcher, write a funct ...
- LC 431. Encode N-ary Tree to Binary Tree 【lock,hard】
Design an algorithm to encode an N-ary tree into a binary tree and decode the binary tree to get the ...
- JNI知识扩展
JNI(Java Native Interface,JAVA原生接口) 使用JNI可以使Java代码和其他语言写的代码(如C/C++代码)进行交互. 问:为什么要进行交互? |- 首先,Java语言提 ...
- springboot2.0数据制作为excel表格
注意:由于公司需要大量导出数据成excel表格,因此在网上找了方法,亲测有效. 声明:该博客参考于https://blog.csdn.net/long530439142/article/details ...
- kvm网络虚拟化(vlan,bond,vlan+bond)(3)
一.Linux Bridge网桥管理 网络虚拟化是虚拟化技术中最复杂的部分,也是非常重要的资源. VM2 的虚拟网卡 vnet1 也连接到了 br0 上. 现在 VM1 和 VM2 之间可以通信,同时 ...
- [NodeJS] 优缺点及适用场景
概述: NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”,那么它的出现是为了解决什么问题呢,它有什么优缺点以及它适用于什么场景呢? 本文就个人使用经验对这些问题进行探讨. 一. ...