文章分类 - python
摘要:上一部分(Python 异步网络爬虫 I)整理了如何利用 aiohttp 和 asyncio 执行异步网络请求,接下来我们将在此基础上实现一个简洁、普适的爬虫框架。 一般网站抓取的流程是这样的: 从入口页面开始提取一组下一级页面的链接,然后递归地执行下去,直到最后一层页面为止。唯一不同的是对每一级页
阅读全文
摘要:本文主要讨论下面几个问题: 什么是异步(Asynchronous)编程? 为什么要使用异步编程? 在 Python 中有哪些实现异步编程的方法? Python 3.5 如何使用 async/await 实现异步网络爬虫? 所谓异步是相对于同步(Synchronous)的概念来说的,之所以容易造成混乱
阅读全文
摘要:很多人都在谈论函数式编程(Functional Programming),只是很多人站在不同的角度看到的是完全不一样的风景。坚持实用主义的 Python 老司机们对待 FP 的态度应该更加包容,虽然他们不相信银弹,但冥冥中似乎能感觉到 FP 暗合了 Python 教义(The Zen of Pyth
阅读全文
摘要:原文链接 : How the heck does async/await work in Python 3.5? 原文作者 : Brett Cannon 译文出自 : 掘金翻译计划 译者 : @Yushneng 原文链接 : How the heck does async/await work in
阅读全文
摘要:1.天下大势: nowadays, CPU的速度远远快于磁盘、网络等IO。在一个线程中,CPU执行代码的速度极快,然而,一旦遇到IO操作,如读写文件、发送网络数据时,就需要等待IO操作完成,才能继续进行下一步操作。这种情况称为同步IO。 在IO操作的过程中,当前线程被挂起,而其他需要CPU执行的代码
阅读全文
摘要:因为要找工作,把之前自己搞的爬虫整理一下,没有项目经验真蛋疼,只能做这种水的不行的东西。。。T T,希望找工作能有好结果。 之前爬虫使用的是requests+多线程/多进程,后来随着前几天的深入了解,才发现,对于爬虫来说,真正的瓶颈并不是CPU的处理速度,而是对于网页抓取时候的往返时间,因为如果采用
阅读全文
摘要:协程 协程的用途在于IO,遇到IO就挂起,并发执行另一个任务,比如http请求,可以实现同时请求若干个网站的目的但是很多经典库比如requests并不支持协程 生成器与协程 PEP-0492 通过使用 async 关键字显式的对生成器和协程做了区分。 实际上,使用async显示声明协程(函数),并在
阅读全文
摘要:在同步IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行。而异步IO方式中,线程发送一个IO请求到内核,然后继续处理其他的事情,内核完成IO请求后,将会通知线程IO操作完成了。 如果IO请求需要大量时间执行的话,异步IO方式可以显著提高效率,因为在线程等待的这段时间
阅读全文
摘要:函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数。 高阶函数 Python支持高阶函数(Higher-order function)。 什么是高阶函数呢?把函数作为参数传入,这样的函数称为高阶函数。 高阶函数的特点:1、变量可以指向函数 这个例子告诉我们:abs是函
阅读全文
摘要:面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。 本节对于面向对象的概念不做展开说明。本节主要内容是Python里如何使用面向对象编程。 分下面几部分:1、类的格式2、类的实例
阅读全文
摘要:多重继承 Python里允许多重继承,即一个类可以同时继承多个类: 这样,Dog同时拥有Mammal、Runnable的属性和方法。 __slots__限制实例的属性 由于类的实例可以动态绑定新的属性,有时候我们不希望这样,可以通过__slots__进行限制: 然后,我们试试: 由于score没有被
阅读全文
摘要:asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持。 asyncio的编程模型就是一个消息循环。我们从asyncio模块中直接获取一个EventLoop的引用,然后把需要执行的协程扔到EventLoop中执行,就实现了异步IO。 用asyncio实现Hello worl
阅读全文
摘要:用asyncio提供的@asyncio.coroutine可以把一个generator标记为coroutine类型,然后在coroutine内部用yield from调用另一个coroutine实现异步操作。 为了简化并更好地标识异步IO,从Python 3.5开始引入了新的语法async和awai
阅读全文
摘要:概要 要理解装饰器,首先要理解函数在 Python 是一等公民对象(first class objects),可以作为参数传递给另一个函数,也可以作为结果值返回。 而 Python 装饰器正是利用这一特性,其实现方式分为两类:函数装饰器和类装饰器 函数装饰器 函数装饰器是使用函数实现的装饰器,一个简
阅读全文
摘要:我们这里说的协程,是指通过生成器实现的。事实上,Python 3.5 引入了新的关键字 async 和 await 来定义协程,与我们这里的协程实现不同。当然,因为 Python 3.5 才引入 async 和 await 关键字,所有 Python 3.5 之前和 Python 2 都是通过下面的
阅读全文
摘要:考虑生产者/消费者问题,我们希望生产者能源源不断产生新的值(数据)给消费者使用,我们还希望生产者能够维持它所产生的值的状态,这样每次生产者都可以根据前面的信息(状态)产生新的值。Python 的生成器就为这种问题提供了一个很好的解决方法。 生成器是一种特殊的函数,其思想可以被简化成:为生成器的调用者
阅读全文
摘要:翻译自 Understanding Python’s “with” statement,有改动。 从 comp.lang.python 以及其它论坛来看,Python 2.5 新引入的 with 语句对于有经验的 Python 编程人员来说,甚至都有点困惑。 其实正如 Python 中的其他事物一样
阅读全文
摘要:想象这样一个场景,你有一个协程,其中包含了许多的 yield: >>> def somecoro(): ... do_something_necessary ... while True: ... recv1 = yield ... do something with recv1 ... recv2
阅读全文
摘要:概要 Python 3.5 引入 async 和 await 使得协程成为 Python 原生特征(native feature),引入这两个新语法的原因主要可以概括为下面几点: async async 可以被用来定义一个原生协程,其语法如下: >>> async def read_data(db)
阅读全文
摘要:在python3.5中,加入了asyncio/await 关键字,使得回调的写法更加直观和人性化。而aiohttp是一个提供异步web服务的库,分为服务器端和客户端。这里主要使用其客户端。本文分为三步分,第一部分简单介绍python3.5的异步,asyncio/await 关键字。第二部分介绍aio
阅读全文

浙公网安备 33010602011771号