写python协程时使用gevent模块和queue模块可以大大提高爬虫速度。在同时爬取多个网站时,原来用for循环一个网站一个网站按循序顺序爬,就像先烧饭后烧菜,两个步骤异步进行。使用多协程可以让爬虫自己选择爬取顺序,就像边烧饭边烧菜,两个步骤同步进行,速度自然快了。不多说了,来看下代码吧:fromgeventimportmonkeymonkey.patch_all()#打上多协程布丁,下面的程序就可以执行多协程了importrequests,geven
系统 2019-09-27 17:47:59 1988
目录Python并发编程06/同步/异步调用/异步调用+回调函数1.如何看源码2.昨日回顾3.阻塞、同步调用、异步调用3.1概念3.2异步调用3.3同步调用3.4异步如何取结果4.异步调用+回调函数4.1浏览器工作原理4.2什么叫爬虫4.3异步调用+回调函数Python并发编程06/同步/异步调用/异步调用+回调函数1.如何看源码2.昨日回顾#1.递归锁:RLock,同一把锁,引用一次计数+1,释放一次计数-1,只要计数不为零,其他线程就抢不到,能解决死锁
系统 2019-09-27 17:47:25 1988
斐波那契数列:12345678910...11235813213455...1.用迭代实现斐波那契数列(非递归方法)deffab(n):n1=1n2=1n3=1ifn<1:print('输入有误!')while(n-2)>0:n3=n2+n1#第三项为前两项和n1=n2#计算完,整体后移,准备计算下一项n2=n3n-=1returnn3a=int(input('请输入要计算的斐波那契项数:'))result=fab(a)print('第%d项斐波那契数为%
系统 2019-09-27 17:46:56 1988
前言lambda是表达式,用于创建匿名函数,可以和filter、map、reduce配合使用。本文环境Python3.7。一、lambda表达式lambda只包含一个语句,用于创建匿名函数。语法:lambda[arg1[,arg2,.....argn]]:expressionarg1--参数,可以有多个expression--表达式使用例子:f1=lambdax:x>10print(f1(1))#输出:Falseprint(f1(11))#输出:Truef
系统 2019-09-27 17:46:55 1988
在实现异步调用之前我们先进行什么是同步调用和异步调用同步:是指完成事务的逻辑,先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务,顺序执行异步:是和同步相对的,异步是指在处理调用这个事务的之后,不会等待这个事务的处理结果,直接处理第二个事务去了,通过状态、通知、回调来通知调用者处理结果分析一下,下面的例子:定义了一个装饰器async和A、B两个function函数A里面sleep10s,然后打印afunction字符串B里面直接打
系统 2019-09-27 17:45:52 1988
首先,我们了解下什么是数据类型计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种:整数Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。计算机由于使用二进制,所以,有时
系统 2019-09-27 17:38:39 1988
本文记录了初学Python常用的两则实用技巧,分享给大家供大家参考之用。具体如下:1.可变参数示例代码如下:>>>defpowersum(power,*args):...'''''Returnthesumofeachargumentraisedtospecifiedpower.'''...total=0...foriinargs:...total+=pow(i,power)...returntotal...>>>powersum(2,3,4)25>>>po
系统 2019-09-27 17:38:24 1988
python3shelve模块的详解一、简介在python3中我们使用json或者pickle持久化数据,能dump多次,但只能load一次,因为先前的数据已经被后面dump的数据覆盖掉了。如果我们想要实现dump和load多次,可以使用shelve模块。shelve模块可以持久化所有pickle所支持的数据类型。二、持久化数据1、数据持久化importshelveimportdatetimeinfo={'name':'bigberg','age':22}
系统 2019-09-27 17:38:13 1988
自定义序列的相关魔法方法允许我们自己创建的类拥有序列的特性,让其使用起来就像python的内置序列(dict,tuple,list,string等)。如果要实现这个功能,就要遵循python的相关的协议。所谓的协议就是一些约定内容。例如,如果要将一个类要实现迭代,就必须实现两个魔法方法:__iter__、next(python3.x中为__new__)。__iter__应该返回一个对象,这个对象必须实现next方法,通常返回的是self本身。而next方法
系统 2019-09-27 17:37:54 1988
首先第一步,打开文件,有两个函数可供选择:open()和file()①.f=open('file.txt',‘w')...file.close()②.f=file('file.json','r')...file.close()#记得打开文件时最后不要忘记关闭!open()和file()都是Python的内建函数,返回一个文件对象,具有相同的功能,可以任意替换。使用语法为:f=open(fileName,access_mode='r',buffering=-
系统 2019-09-27 17:37:51 1988