# Python 协程与指定并发数
在现代编程中,尤其是处理 I/O 密集型任务时,协程因其轻量级和高效的特性而受到青睐。Python 自 3.5 版本起引入了`async/await`语法,使得编写和管理协程变得更加简单。本文将深入探讨 Python 协程的原理,并展示如何在协程中指定并发数。
## 什么是协程?
协程是一种独特的控制结构,它和线程很相似,但更为轻量。协程通过 `async            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-10-29 06:16:45
                            
                                58阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录前言一、多任务爬虫之协程二、使用步骤1.实现一个简单的协程2.协程爬虫实战 前言Python中协程的使用一、多任务爬虫之协程简介:Python语言弥补多进程的GIL(全局解释器锁)缺陷,借助于Linux中的非阻塞模式(I/O多路复用,包含三种模式:轮询select、事件回调poll、增强型的事件回调epoll),开发出异步非阻塞的框架。协程(又称之为微线程),只需要一个线程即可,同时由用            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-06 19:36:24
                            
                                77阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Python之并发编程一、概述白话:一个进程里面的子任务称为线程,所以一个进程至少有一个线程;进程:一个具有独立功能的程序,关于某个数据集合的一次运动活动;线程:是操作系统能够进行运算调度的最小单位,被包含在进程中,是进程的实际运作单位;多任务的几种模式如下:1、启动多个进程,每个进程虽然只有一个线程,但多个进程可以一块执行多个任务(多进程)2、启动一个进程,在一个进程内启动多个线程,多个线程也能            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-21 14:31:12
                            
                                137阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
              
     
   二 开启线程的两种方式     #方式一
from threading import Thread
import time
def sayhi(name):
    time.sleep(2)
    print('%s say hello' %name)
if __name__ == '__main__':
    t=Thread(target=sayhi,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-31 23:39:04
                            
                                24阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             多线程并发、包括线程池,是操作系统控制的并发。如果是单线程,可以通过协程实现单线程下的并发。协程 又称微线程,是一种用户态的轻量级线程,由用户程序自己控制调度。python的线程属于内核级别的,由操作系统控制调度(如单线程遇到io或执行时间过长就会被迫交出cpu执行权限,切换其他线程运行)而单线程里开启协程,一旦遇到io,由用户自己控制调度。特点:1、单线程里并发2、修改共享数据不需枷            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-21 19:35:57
                            
                                23阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            python编程使用协程并发的优缺点协程协程是一种用户态的轻量级线程,又称微线程。协程拥有自己的寄存器上下文和栈,调度切换时,将寄存器上下文和栈保存到其他地方,>在切回来的时候,恢复先前保存的寄存器上下文和栈。因此:协程能保留上一次调用时的>状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的>状态,换种说法:进入上一次离开时所处逻辑流的位置.优点:            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-08 09:16:14
                            
                                91阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            python中实现并发的方式有很多种,通过多进程并发可以真正利用多核资源,而多线程并发则实现了进程内资源的共享,然而Python中由于GIL的存在,多线程是没有办法真正实现多核资源的。对于计算密集型程序,应该使用多进程并发充分利用多核资源,而在IO密集型程序中,多核优势并不明显,甚至由于大多数时间都是在IO堵塞状态,多进程的切换消耗反而让程序效率更加低下。而当需要并发处理IO密集型任务时,就需要用            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-09 10:28:17
                            
                                56阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            本文实例讲述了python使用协程实现并发操作的方法。分享给大家供大家参考,具体如下:协程协程是一种用户态的轻量级线程,又称微线程。协程拥有自己的寄存器上下文和栈,调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此:协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说法:进入上一次离开时所            
                
         
            
            
            
            协程并发
import gevent
from gevent import monkey
monkey.parch_all()
from socket import *
from time import ctime
def server(port):
s=socket()
s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
s.bind((’’,port))
s.lis...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-04-02 18:33:43
                            
                                172阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            协程并发import geventfrom gevent import monkeymonkey.parch_all()from socket import *from time import ctimedef server(port):s=socket()s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)s.bind((’’,port))s.lis...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-04-22 19:31:26
                            
                                273阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录P1 Python并发编程简介一、具体应用:二、几种方式的联系与Python的支持:1)对比2)python的支持P2 怎样选择多线程、多进程、多协程一、CPU密集型计算、IO密集型计算CPU密集型(CPU-bound):I/O密集型(I/O bound):二、多线程、多进程、多协程的对比:1、Python并发编程有三种方式:2、 对比1)多进程Process(multiprocessi            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-05 21:07:17
                            
                                135阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1 什么是协程 coroutine  协程: 又称微线程,纤程。在一个线程内执行。 子程序: 函数,调用是通过栈来实现的。一个调用一个返回。 多线程: 避免程序顺序执行的方式之一是多线程。GIL锁只能一个点一个线程,对于io操作会有性能提升,但是依然 有线程的管理和切换,同步的开销等等 协程与一般函数的不同: 协程内部可以中断并切换,且保存当前执行状态。 协程和多线程对比的优势: 协程具有极高的执            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-25 08:09:26
                            
                                62阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Python并发编程25.协程5.1 协程的概念5.2 生成器函数—协程发展史5.3 协程的实现5.3.1 使用生成器yield实现5.3.2 greenlet实现协程5.3.3 gevent 实现协程5.3.4 Asyncio5.4 Asyncio模块5.4.1 重要概念和相关方法5.4.2 定义协程5.4.3 运行协程5.4.4 回调函数5.4.5 多个协程并行5.4.6 run_until            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-30 10:27:37
                            
                                51阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            python asyncio网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程。无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态。使用协程可以实现高效的并发任务。Python的在3.4中引入了协程的概念,可是这个还是以生成器对象为基础,3.5则确定了协程的语法。下面将简单介绍asyncio的使用。实现协程的不仅仅是asyncio            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-12 14:16:20
                            
                                132阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            协程协程是一种用户态的轻量级线程,又称微线程。协程拥有自己的寄存器上下文和栈,调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此:协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说法:进入上一次离开时所处逻辑流的位置。优点:无需线程上下文切换的开销无需原子操作锁定及同步的开销方便切换控制            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-03 17:42:18
                            
                                99阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知。Asyncio 是并发(concurrency)的一种方式。当然对 Python 来说,并发编程还可以通过线程(threading)和多进程(multiprocessing)来实现。Asyncio 并不能带来真正的并行(parallelism)。当然,因为 GIL(全局解释器锁)的存在,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-03 22:28:50
                            
                                222阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、 协程简介首先还是先抛出一系列的问题,大家搞清楚这些问题后学习 Kotlin 协程可能会轻松一点:1、什么是并发?什么是并行?2、什么是多任务?什么是协作式多任务?什么是抢占式多任务?3、什么是同步?什么是异步?4、什么是非阻塞式?什么是阻塞式?5、什么是挂起?6、什么是非阻塞式挂起?7、什么是协程?8、什么是 Kotlin 协程?9、Kotlin 协程有什么用?1、什么是并发?什么是并行?1            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-31 10:25:06
                            
                                56阅读
                            
                                                                             
                 
                
                             
         
            
            
            
                python线程多并发,是指在一个进程中开启n个线程,以此来达到并发执行任务。但是python中的线程有GIL解释锁,只能在同一时间运行一个线程。多线程的并发是多个线程来回切换去执行任务。线程少的话没什么影响,如果开的线程特别多,就会导致线程切换太耗费资源,达不到想要的多线程并发的效果。个人观点(python中的线程有点鸡肋)。   &nb            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-14 02:10:01
                            
                                175阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            
            
        补充:数据安全问题进程:
 
    多个进程操作同一个文件,会出现数据不安全
 
线程:
 
    多个线程操作同一个全局变量,会出现数据不安全
 
    对于共享的数据操作:
 
        如果是 += *= /= -= 操作,都存在数据不安全问题
 
        如果是append,extend,p            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-11 00:12:40
                            
                                56阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            协程协程是一种用户态的轻量级线程,又称微线程。协程拥有自己的寄存器上下文和栈,调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此:协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说法:进入上一次离开时所处逻辑流的位置。优点:无需线程上下文切换的开销无需原子操作锁定及同步的开销方便切换控制            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-20 21:35:24
                            
                                136阅读