1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 多线程爬虫(1)-简单线程和面向对象线程

多线程爬虫(1)-简单线程和面向对象线程

时间:2018-12-24 18:48:45

相关推荐

多线程爬虫(1)-简单线程和面向对象线程

1.python线程的简单使用

import timeimport threadingdef sing(a):for x in range(1,6):print('%s接收过来的参数%s'%(threading.current_thread().name,a))print('我在唱什么')time.sleep(1)def dance(a):for x in range(1,6):print('%s接收过来的参数%s'%(threading.current_thread().name,a))print('我在跳舞')time.sleep(1)def main():a='孙悟空'tsing=threading.Thread(target=sing,name="sing",args=(a,))#创建唱歌线程tsdance=threading.Thread(target=dance,name="dance",args=(a,))#创建跳舞线程#启动线程tsing.start()tsdance.start()#让主线程在等待子线程结束之后再结束tsing.join()tsing.join()print('主线程')if __name__=='__main__':main()

2.面向对象的线程使用 注意线程锁的应用(后面会用到)

import threadingimport time#线程之间共享全局变量 很容易产生数据混乱 这个时候要用锁#线程锁 谁先抢到 先上锁 谁先使用'''创建锁 suo=threading.Lock()上锁suo.acquire()释放锁suo.release()队列(queue) 下载线程 解析线程'''#面向对象的方式线程 写一个类 继承threading.Threadclass SingThread(threading.Thread):def __init__(self,name,a):#面向对象编程 继承_init__方法必须先手动调用父类的构造方法 因为你不知道他做了什么事情super().__init__()self.name=nameself.a=adef run(self):print('%s接收过来的参数%s'%(self.name,self.a))for x in range(1,6):print('我在唱七里香')time.sleep(1)class DanceThread(threading.Thread):def __init__(self,name,a):super().__init__()self.name=nameself.a=adef run(self):for x in range(1,6):print('我在跳广场舞')time.sleep(1)def main():tsing=SingThread('dance','猪悟能')tsdance=DanceThread()#启动线程tsing.start()tsdance.start()#让主线程在等待子线程结束之后再结束tsing.join()tsing.join()print('子线程和主线程都结束')if __name__=='__main__':main()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。