
多任务编程
Python 多任务编程
鞋子不会飞
突破认识看世界
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
进程_线程_协程对比
进程_线程_协程对比1. 进程、线程、协程之间的关系2.进程、线程、线程的对比1. 进程、线程、协程之间的关系一个进程至少有一个线程,进程里面可以有多个线程一个线程里面可以有多个协程2.进程、线程、线程的对比进程是资源分配的单位线程是操作系统调度的单位进程切换需要的资源最大,效率很低线程切换需要的资源一般,效率一般(当然了在不考虑GIL的情况下)协程切换任务资源很小,效率高多进程、多线程根据cpu核数不一样可能是并行的,但是协程是在一个线程中 所以是并发...原创 2020-10-19 21:31:53 · 348 阅读 · 0 评论 -
Python协程之gevent
Python协程之gevent1. gevent的介绍2. gevent的使用3. gevent切换执行4. 给程序打补丁5. 注意1. gevent的介绍greenlet已经实现了协程,但是这个还要人工切换,这里介绍一个比greenlet更强大而且能够自动切换任务的第三方库,那就是gevent。gevent内部封装的greenlet,其原理是当一个greenlet遇到IO(指的是input output 输入输出,比如网络、文件操作等)操作时,比如访问网络,就自动切换到其他的greenlet,等到原创 2020-10-18 23:41:58 · 3470 阅读 · 0 评论 -
Python多任务之协程之greenlet
Python协程之greenlet1.greentlet的介绍1.greentlet的介绍为了更好使用协程来完成多任务,python中的greenlet模块对其封装,从而使得切换任务变的更加简单使用如下命令安装greenlet模块:pip3 install greenletimport timeimport greenlet# 任务1def work1(): for i in range(5): print("work1...") time.s原创 2020-10-18 23:30:04 · 351 阅读 · 0 评论 -
多任务之协程
协程1.协程的概念1.协程的概念协程,又称微线程,纤程,也称为用户级线程,在不开辟线程的基础上完成多任务,也就是在单线程的情况下完成多任务,多个任务按照一定顺序交替执行 ,通俗理解只要在def里面只看到一个yield关键字表示就是协程协程是也是实现多任务的一种方式协程yield的代码实现import timedef work1(): while True: print("----work1---") yield time.slee原创 2020-10-18 23:26:14 · 192 阅读 · 0 评论 -
生成器
生成器1. 生成器的概念2. 创建生成器方法13. 创建生成器方法24.生成器使用return关键字5. yield和return的对比6. 使用send方法启动生成器并传参1. 生成器的概念生成器是一类特殊的迭代器,它不需要再像上面的类一样写__iter__()和__next__()方法了, 使用更加方便,它依然可以使用next函数和for循环取值2. 创建生成器方法1第一种方法很简单,只要把一个列表生成式的 [ ] 改成 ( )my_list = [i * 2 for i in rang原创 2020-10-18 23:18:50 · 280 阅读 · 0 评论 -
迭代器
迭代器1. 自定义迭代器对象2. iter()函数与next()函数3. for循环的本质4. 迭代器的应用场景1. 自定义迭代器对象 自定义迭代器对象: 在类里面定义__iter__和__next__方法创建的对象就是迭代器对象from collections import Iterablefrom collections import Iterator# 自定义可迭代对象: 在类里面定义__iter__方法创建的对象就是可迭代对象class MyList(object): de原创 2020-10-18 23:03:47 · 106 阅读 · 0 评论 -
迭代
迭代1. 迭代的概念2. 可迭代对象4. 自定义可迭代对象1. 迭代的概念#使用for循环遍历取值的过程叫做迭代,比如:使用for循环遍历列表获取值的过程for value in [2, 3, 4]: print(value)2. 可迭代对象使用for循环遍历取值的对象叫做可迭代对象, 比如:列表、元组、字典、集合、range、字符串判断对象是否是可迭代对象# 元组,列表,字典,字符串,集合,range都是可迭代对象from collections import Iter原创 2020-10-18 22:55:03 · 300 阅读 · 0 评论 -
多任务之进程池Pool
进程池Pool1. 进程池的概念2. 进程池同步执行任务3. 进程池异步执行任务4. 文件夹拷贝器-多任务1. 进程池的概念池子里面放的是进程,进程池会根据任务执行情况自动创建进程,而且尽量少创建进程,合理利用进程池中的进程完成多任务当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。初始化Pool时,可以指定一个最大原创 2020-10-18 22:37:43 · 337 阅读 · 0 评论 -
多任务之进程间通信-Queue
进程间通信-Queue1. Queue的使用2. 消息队列Queue完成进程间通信的演练1. Queue的使用可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序,首先用一个小实例来演示一下Queue的工作原理:import multiprocessingimport timeif __name__ == '__main__': # 创建消息队列, 3:表示队列中最大消息个数 queue = multiprocessi原创 2020-10-18 21:27:52 · 299 阅读 · 0 评论 -
多任务之死锁
死锁1. 死锁的概念2. 死锁示例3. 避免死锁1. 死锁的概念死锁: 一直等待对方释放锁的情景就是死锁为了更好的理解死锁,来看一个现实生活的效果图:说明:现实社会中,男女双方一直等待对方先道歉的这种行为就好比是死锁。死锁的结果会造成应用程序的停止响应,不能再处理其它任务了。2. 死锁示例需求:根据下标在列表中取值, 保证同一时刻只能有一个线程去取值import threadingimport time# 创建互斥锁lock = threading.Lock()#原创 2020-10-17 19:55:04 · 316 阅读 · 0 评论 -
多任务之互斥锁
互斥锁1.互斥锁的概念2. 互斥锁的使用3. 使用互斥锁完成2个线程对同一个全局变量各加100万次的操作1.互斥锁的概念互斥锁: 对共享数据进行锁定,保证同一时刻只能有一个线程去操作。注意:互斥锁是多个线程一起去抢,抢到锁的线程先执行,没有抢到锁的线程需要等待,等互斥锁使用完释放后,其它等待的线程再去抢这个锁。2. 互斥锁的使用threading模块中定义了Lock变量,这个变量本质上是一个函数,通过调用这个函数可以获取一把互斥锁。互斥锁使用步骤:# 创建锁mutex = threadi原创 2020-10-17 19:48:33 · 514 阅读 · 0 评论 -
多任务之线程的注意点
线程的注意点1. 线程的注意点介绍2. 线程之间执行是无序的3. 主线程会等待所有的子线程执行结束再结束3. 线程之间共享全局变量4. 线程之间共享全局变量数据出现错误问题1. 线程的注意点介绍线程之间执行是无序的主线程会等待所有的子线程执行结束再结束线程之间共享全局变量线程之间共享全局变量数据出现错误问题2. 线程之间执行是无序的import threadingimport timedef task(): time.sleep(1) print("当前线程:",原创 2020-10-17 19:28:35 · 101 阅读 · 0 评论 -
Python多任务之多线程的使用
Python多线程的使用1. 导入线程模块2. 线程类Thread参数说明3. 启动线程4. 多线程完成多任务的代码1. 导入线程模块#导入线程模块import threading2. 线程类Thread参数说明Thread([group [, target [, name [, args [, kwargs]]]]])group: 线程组,目前只能使用Nonetarget: 执行的目标任务名args: 以元组的方式给执行任务传参kwargs: 以字典方式给执行任务传参name:原创 2020-10-17 18:43:54 · 570 阅读 · 0 评论 -
多任务之线程(threading)
多任务之线程1. 线程的介绍2. 线程的概念3. 线程的作用1. 线程的介绍想要实现多任务除了使用进程,还可以使用线程来完成,线程是实现多任务的另外一种方式。2. 线程的概念线程是进程中执行代码的一个分支,每个执行分支(线程)要想工作执行代码需要cpu进行调度,也就是说线程是cpu调度的基本单位,每个进程至少都有一个线程,而这个线程就是我们通常说的主线程。3. 线程的作用多线程可以完成多任务多线程效果图:...原创 2020-10-17 18:39:51 · 171 阅读 · 0 评论 -
多任务之进程的注意点
进程的注意点1. 进程的注意点介绍2. 进程之间不共享全局变量3. 进程之间不共享全局变量的小结4. 主进程会等待所有的子进程执行结束再结束5. 主进程会等待所有的子进程执行结束再结束的小结1. 进程的注意点介绍进程之间不共享全局变量主进程会等待所有的子进程执行结束再结束2. 进程之间不共享全局变量import multiprocessingimport time# 定义全局变量g_list = list()# 添加数据的任务def add_data(): for i原创 2020-10-17 18:30:23 · 149 阅读 · 0 评论 -
Pyhon多进程的使用(multiprocessing)
Pyhon多进程的使用1 导入进程包2. Process进程类的说明3. 多进程完成多任务的代码3.1 demo(示例)3.2 获取进程编号3.3 进程执行带有参数的任务3.3.1 进程执行带有参数的任务的介绍1 导入进程包#导入进程包import multiprocessing2. Process进程类的说明Process([group [, target [, name [, args [, kwargs]]]]])group:指定进程组,目前只能使用Nonetarget:执行的目原创 2020-10-17 16:02:18 · 222 阅读 · 0 评论 -
多任务处理之进程(Process)
多任务处理之进程1. 进程的介绍2. 进程的概念3. 进程的作用1. 进程的介绍 想要实现多任务可以使用进程来完成,进程是实现多任务的一种方式。2. 进程的概念一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单位,也就是说每启动一个进程,操作系统都会给其分配一定的运行资源(内存资源)保证进程的运行。比如:现实生活中的公司可以理解成是一个进程,公司提供办公资源(电脑、办公桌椅等),真正干活的是员工,员工可以理解成线程。注意:一个程序运行后至少有一个进程,一个进程默认有一个原创 2020-10-17 13:53:15 · 621 阅读 · 0 评论 -
多任务处理
多任务处理1. 多任务的介绍2. 多任务的概念3. 多任务的执行方式1. 多任务的介绍多任务的最大好处是充分利用CPU资源,提高程序的执行效率。2. 多任务的概念多任务是指在同一时间内执行多个任务,例如: 现在电脑安装的操作系统都是多任务操作系统,可以同时运行着多个软件。多任务效果图:3. 多任务的执行方式并发并行并发:在一段时间内交替去执行任务。例如:对于单核cpu处理多任务,操作系统轮流让各个软件交替执行,假如:软件1执行0.01秒,切换到软件2,软件2执行0.01秒,原创 2020-10-15 22:45:59 · 1810 阅读 · 0 评论