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

2 篇文章 0 订阅
2 篇文章 0 订阅

1.python线程的简单使用

import time
import threading

def 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 threading
import time

#线程之间共享全局变量  很容易产生数据混乱  这个时候要用锁
#线程锁  谁先抢到 先上锁  谁先使用
'''
创建锁  
suo=threading.Lock()
上锁
suo.acquire()
释放锁
suo.release()


队列(queue) 
 下载线程  
 解析线程

'''

#面向对象的方式线程  写一个类 继承threading.Thread
class SingThread(threading.Thread):
    def __init__(self,name,a):
        #面向对象编程  继承_init__方法必须先手动调用父类的构造方法 因为你不知道他做了什么事情
        super().__init__()
        self.name=name
        self.a=a
        
    def 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=name
        self.a=a
        
    def 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()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值