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()