Python 的 asyncio 类似于 C++ 的 Boost.Asio。 所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知。 Asyncio 是并发(concurrency)的一种方式。对 Python 来说,并发还可以通过线程(th ...
分类:
编程语言 时间:
2018-08-10 10:54:10
阅读次数:
187
ngx_lua模块的原理: 1、每个worker(工作进程)创建一个Lua VM,worker内所有协程共享VM;2、将Nginx I/O原语封装后注入 Lua VM,允许Lua代码直接访问;3、每个外部请求都由一个Lua协程处理,协程之间数据隔离;4、Lua代码调用I/O操作等异步接口时,会挂起当 ...
分类:
其他好文 时间:
2018-08-09 19:29:02
阅读次数:
977
文章思路:本文将先介绍协程的概念,然后分别介绍Python2.x与3.x下协程的用法,最终将协程与多线程做比较并介绍异步爬虫模块。 协程 概念 协程,又称微线程,纤程,英文名Coroutine。协程的作用,是在执行函数A时,可以随时中断,去执行函数B,然后中断继续执行函数A(可以自由切换)。但这一过 ...
分类:
编程语言 时间:
2018-08-09 17:44:30
阅读次数:
267
先来个最简单的例子: 把1-10000每个数求平方 服务器server: 用两个队列存储任务、结果 定义两个函数 要实现分布式得继承multiprocessing.managers.BaseManager 在主函数里multiprocessing.freeze_support()开启分布式支持 注册 ...
分类:
编程语言 时间:
2018-08-04 13:42:27
阅读次数:
161
所谓超时,就是一段时间用户没有做出任何操作,这里需要了解 select select select 用法与 switch 语言非常类似,由 select 开始一个新的选择块,每个选择条件由 case 语句来描述 case 语句里必须是一个 IO 操作 select语句中,会按顺序从头至尾评估每一个发 ...
分类:
其他好文 时间:
2018-08-04 11:35:58
阅读次数:
149
协程这个概念很久了,好多程序员是实现过这个组件的,网上关于协程的文章,博客,论坛都是汗牛充栋,在知乎,github上面也有很多大牛写了关于协程的心得体会。突发奇想,我也来实现一个这样的组件,并测试了一下性能。借鉴了很多大牛的思想,阅读了很多大牛的代码。于是把整个思考过程写下来。实现代码 https://github.com/wangbojing/NtyCo代码简单易读,如果在你的项目中,
分类:
其他好文 时间:
2018-08-03 20:49:49
阅读次数:
159
import requests import json import time from pyquery import PyQuery import pandas as pd from collections import OrderedDict import multiprocessing imp... ...
分类:
其他好文 时间:
2018-08-03 18:47:11
阅读次数:
183
协程 引子 之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗一定的时间来创建进程、创建线程、以及管理他们之间的切换。 随着我们对于效 ...
分类:
编程语言 时间:
2018-08-02 00:07:34
阅读次数:
198
1 . 线程队列 from multiprocessing Queue , JoinableQueue #进程IPC队列 from queue import Queue #线程队列 先进先出 from queue import LifoQueue #后进先出的 方法都是一样的 : put , get ...
分类:
编程语言 时间:
2018-08-01 19:35:36
阅读次数:
207