查询whois脚本的一些问题及多线程处理

之前做的批量查询域名注册时间的脚本,因为页面不是最新数据,所以跑出来的注册日期有部分错误。
考虑了几个解决方案,包括从who.is上爬数据,和强制刷新chinaz等,在此就不多说,会另外写出来。
在做这些操作时,明显感觉到速度没上去,故开始学习多线程。学习需要融会贯通,应用才是硬道理。
多线程的实现有多种方式,以下是其中之一。
import threading#导入threading
from time import ctime,sleep
def music(func):#以播放音乐为例
for i in range(2):#循环从0到1,播放两遍
print(“I was listening to {0}. {1}”.format(func,ctime()))#显示正在听的音乐,名字,及时间
sleep(2)#等2秒
def move(func):#以看电影为例
for i in range(2):#循环从0到1,播放两遍
print(“I was at the {0}. {1}”.format(func,ctime()))#显示正在看的电影,名字,及时间
sleep(2)#等2秒
threads = []#创建thread多线程数组
t1 = threading.Thread(target=music,args=(u’双截棍’,))#创建线程t1,使用threading.Thread()方法,target调用music方法,args对music进行传参
threads.append(t1)# 把创建好的线程t1装到threads数组
t2 = threading.Thread(target=move,args=(u’大话西游’,))# 以同样的方式创建线程t2
threads.append(t2)#把t2也装到threads数组
if __name__ == ‘__main__’:
for t in threads:#最后通过for循环遍历数组。(数组装载了t1和t2两个线程)
t.setDaemon(True)#setDaemon(True)声明为守护线程,必须在start()之前使用。如不使用,则守护线程程序会被无限挂起。子线程启动后,父线程也将继续执行下去
t.start()#开始线程
t.join()
#join()方法,用于等待线程终止。在子线程完成运行之前,这个子线程的父线程将一直被阻塞。如不使用Join()方法,则父线程结束时,子线程也跟着结束
#注意: join()方法的位置是在for循环之外,即等待for循环里的两个进程都结束后,方才执行主进程
print(“all over {0}”.format(ctime()))
#至此,案例结束。有些粗糙,没有缩进简直了。这个编辑器比Mac的pages还难用,现在终于能回想起以往常被吐槽的office的好了。手动微笑/
下一步,就是考虑将其应用在之前的脚本中。我们不说降费,先来个提速嘛。