# 传统方式执行 VS 多线程执行的区别:
# 传统方式,顺序执行,比如下载图片,一次只能下载一张,等待网络返回的时间就浪费了,运行慢
# 多线程,并行,同时下载多张图片,在等待网络返回的时间,去执行下载其他图片的操作,运行快,利用资源更高效
# 传统
import threading
import time
def draw():
print("draw")
time.sleep(0.5)
def write():
print("write")
time.sleep(0.5)
def main():
for _ in range(5):
draw()
for _ in range(3):
write()
if __name__ == '__main__':
main()
# draw
# draw
# draw
# draw
# draw
# write
# write
# write
# 多线程
import threading
class ThreadWrite(threading.Thread):
def run(self):
for x in range(3):
print("%s: write" % threading.current_thread())
class ThreadDraw(threading.Thread):
def run(self):
for x in range(3):
print("%s: draw" % threading.current_thread())
def main():
t1 = ThreadWrite()
t2 = ThreadDraw()
t1.start()
t2.start()
if __name__ == '__main__':
main()
# <ThreadWrite(Thread-1, started 123145435201536)> is writing
# <ThreadWrite(Thread-1, started 123145435201536)> is writing
# <ThreadDraw(Thread-2, started 123145440456704)> is drawing
# <ThreadWrite(Thread-1, started 123145435201536)> is writing
# <ThreadDraw(Thread-2, started 123145440456704)> is drawing
# <ThreadDraw(Thread-2, started 123145440456704)> is drawing
class ThreadDraw(threading.Thread):
def run(self):
print("%s: draw" % threading.current_thread())
class ThreadWrite(threading.Thread):
def run(self):
print("%s: write" % threading.current_thread())
def main():
for _ in range(5):
td = ThreadDraw()
td.start()
for _ in range(3):
tw = ThreadWrite()
tw.start()
if __name__ == '__main__':
main()
# <ThreadDraw(Thread-1, started 123145519075328)>: draw
# <ThreadDraw(Thread-2, started 123145519075328)>: draw
# <ThreadDraw(Thread-3, started 123145519075328)>: draw
# <ThreadDraw(Thread-4, started 123145519075328)>: draw
# <ThreadDraw(Thread-5, started 123145519075328)>: draw
# <ThreadWrite(Thread-6, started 123145519075328)>: write
# <ThreadWrite(Thread-7, started 123145519075328)>: write
# <ThreadWrite(Thread-8, started 123145519075328)>: write
05-21
354
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)