提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
本文主要介绍线程和协程
提示:以下是本篇文章正文内容,下面案例可供参考
一、线程的创建和使用?
#线程
'''
考虑? 创建线程? 如何使用线程?
t=threading.Thread(target=download,name='aa',args=(1,))
t.start()
线程:
新建 就绪 运行 阻塞 结束
'''
import threading
from time import sleep
#进程: Process
#线程: Thread
def download(n):
images=['girl.jpg','boy.jpg','man.jpg']
for image in images:
print('正在下载:',image)
sleep(n)
print("下载{}成功".format(image))
def listenMusic():
musics=['大碗宽面','土耳其冰淇淋','烤面筋','超级棒棒糖']
for musics in musics:
print('正在听{}'.format(musics))
sleep(0.5)
if __name__ == '__main__':
# 线程对象
t=threading.Thread(target=download,name='aa',args=(1,))
t.start()
t = threading.Thread(target=listenMusic, name='aa')
t.start()
# n=1
# while True:
# print(n)
# sleep(1.5)
# n+=1
二、线程共享全局变量
import threading
from time import sleep
'''
线程是可以共享全局变量的
GIL 全局解释器锁
'''
ticket= 1000
def run1():
global ticket
for i in range(100):
sleep(0.1)
ticket-=1
def run2():
global ticket
for i in range(100):
ticket-=1
if __name__ =='__main__':
#创建线程
th1= threading.Thread(target=run1,name='th1')
th2 = threading.Thread(target=run2,name='th2')
th3 = threading.Thread(target=run1, name='th3')
th4 = threading.Thread(target=run1, name='th4')
#启动
th1.start()
th2.start()
th3.start()
th4.start()
th1.join()
th2.join()
th3.join()
th4.join()
print('ticket:',ticket)
三 线程的同步:
n=0
import threading