摘要:
刚才说了,对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个read操作发生时,它会经历两个阶段:1. 等待数据准备 (Waiting for the data to be ready)2. 将数据从内核 阅读全文
posted @ 2017-10-26 17:59
人生是一场修行
阅读(106)
评论(0)
推荐(0)
摘要:
1、我们之前讲了IO操作什么时候切换回来呢? 我们刚刚讲了回调函数,这个回调函数是当你的程序一遇到IO操作,再一切换,这个切换的时候,切换之前你等着IO操作完了再回来。 2、IO 为什么不阻塞呐? 因为IO操作是用操作系统完成的,咋们用户读一个文件,你以为自己的程序打开一个文件,然后去把文件的内容读 阅读全文
posted @ 2017-10-26 17:43
人生是一场修行
阅读(109)
评论(0)
推荐(0)
摘要:
通常,我们写服务器处理模型的程序时,有以下几种模型: (1)每收到一个请求,创建一个新的进程,来处理该请求; (2)每收到一个请求,创建一个新的线程,来处理该请求; (3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求 上面的几种方式,各有千秋, 第(1)中方法,由于创建新 阅读全文
posted @ 2017-10-26 15:55
人生是一场修行
阅读(182)
评论(0)
推荐(0)
摘要:
刚刚只是在理论上讲述了gevent遇到io自动切换,下面我们就来实际操作一下,在实战过程中我们用协程大面积的爬虫,看看如何用gevent去实现并发的效果的。 2.1、串行爬网页 说明:我们先来看看串行效果的爬网页的代码,看看消耗多长时间 执行结果如下: 2.2、gevent协程爬虫 说明:刚刚是串行 阅读全文
posted @ 2017-10-26 15:35
人生是一场修行
阅读(140)
评论(0)
推荐(0)
摘要:
感觉确实用着比generator还简单了呢,但好像还没有解决一个问题,就是遇到IO操作,自动切换,对不对?所以我们接下来就说说如何遇到IO就切换,不得不提到一个模块Gevent。 Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Green 阅读全文
posted @ 2017-10-26 13:46
人生是一场修行
阅读(278)
评论(0)
推荐(0)
摘要:
协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程。 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此: 协程能保留上一次调用时的状态(即所有局部状态的一个特定组合 阅读全文
posted @ 2017-10-26 11:22
人生是一场修行
阅读(234)
评论(0)
推荐(0)
摘要:
本篇博客主要写进程锁,__name__ == "__main__"函数作用,以及进程池的使用。 2.1、进程锁 说明:通过multiprocessing中的Lock模块来实现进程锁。 1、这边不禁的有个疑问,就是进程中不是相互独立的吗?为啥还要加锁呐? 虽然每个进程都是独立运行的,但是问题来了,它们 阅读全文
posted @ 2017-10-26 10:03
人生是一场修行
阅读(159)
评论(0)
推荐(0)

浙公网安备 33010602011771号