重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
urllib2.urlopen 函数有设置超时的参数timeout, 可以设置超时
创新互联网站建设服务商,为中小企业提供网站制作、网站建设服务,网站设计,网站托管运营等一站式综合服务型公司,专业打造企业形象网站,让您在众多竞争对手中脱颖而出创新互联。
urllib2.urlopen("", timeout=5)
五秒内, 没有相应, 就继续向下执行了
可以通过setsockopt,或者更简单的setblocking,
settimeout设置。阻塞式的socket的recv服从这样的规则:
当缓冲区内有数据时,立即返回所有的数据;当缓冲区内无数据时,阻塞直到缓冲区中有数据。非阻塞式的socket的recv服从的规则则是:
当缓冲区内有数据时,立即返回所有的数据;当缓冲区内无数据时,产生EAGAIN的错误并返回(在Python中会抛出一个异常)。两种情况都不会返回空字符串,返回空数据的结果是对方关闭了连接之后才会出现的。
是为了防止url不可访问,或者响应速度太慢而造成的时间浪费。
比如,你要爬取1000个网站,如果有100个需要30s才能返回数据,你等待他们返回的话就需要3000s了,如果你设置10s超时,那么就能知道最长需要多久1000个可以爬完。
如果解决了您的问题请采纳!
如果未解决请继续追问
pyhon的一个函数在执行I/O参数比如文件读写,socket正在等待数据时是不能干其他事情的,包括打日志。如果想让一个文件准备好读写了或者一个socket有数据可以直接接收时让操作系统通知程序的话,可以试试select库
很简单,新建一个线程即可
import threading
def input_func( context ):
context[ 'data' ] = input( 'input:' )
context = { 'data' : 'default' }
t = threading.Thread( target = input_func ,args = ( context , ) )
t.start( )
t.join( 10 )#等待10秒
print( context )
调用test函数超时监控,使用sleep模拟函数执行超时 2、引入signal模块,设置handler捕