当前位置:   article > 正文

Python_day16--多线程_with threadpoolexecutor(max_workers=4) as pool:

with threadpoolexecutor(max_workers=4) as pool:

一、什么是多线程

多任务可以由多进程完成,也可以由一个进程内的多线程完成。我们说进程是由若干线程组成的,一个进程至少有一个线程。由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix    Thread,而不是模拟出来的线程。

Python的标准库提供了两个模块:     _thread 和 threading , _thread 是低级模块,threading是高级模块,对 _thread 进行了封装。绝大多数情况下,我们只需要使用 threading这个高级模块。

启动一个线程就是把一个函数传入并创建Thread实例,然后调用start()     开始执行。

二、自我认知的多线程

回想一下,我们在你看这篇文章之前是否运行代码都为下面这样,定义两个函数,并且调用他们;

(这里调用time模块只是为了模拟大型程序运行过程的等待时间,可有可无)

  1. import time
  2. import _thread
  3. def song(name):
  4. for i in range(5):
  5. time.sleep(1)
  6. print("正在听歌...")
  7. def code(name):
  8. for i in range(5):
  9. time.sleep(0.5)
  10. print("正在编码...")
  11. # 这两个工作肯定是一个执行结束, 另外一个任务才开始执行;
  12. song(1)
  13. code(1)

我们看到上面的运行结果,先把song函数调用结束后才运行code的代码,但是这对于高速时代发展的我们来说实在是太慢了,为什么不可以让电脑在同一时间内去充分利用他的cpu;这里需要强调的是电脑运行速度最快的是cpu>内存>硬盘,但是cpu大部分时间是在等待下一个指令,而并非在不停的做着运算,所以为达到这一目的,我们需要用到多线程,让我们的cpu时刻保持高速的运算;

下面我们据一个例子来说明这一点:

_thread模块

  1. import time
  2. import _thread
  3. def song(name):
  4. for i in range(5):
  5. time.sleep(1)
  6. print("正在听歌...")
  7. def code(name):
  8. for i in range(5):
  9. time.sleep(0.5)
  10. print("正在编码...")
  11. # # 这两个工作肯定是一个执行结束, 另外一个任务才开始执行;
  12. # song(1)
  13. # code(1)
  14. _thread.start_new_thread(song, ('song',))
  15. _thread.start_new_thread(code, ('code',))
  16. while 1:
  17. pass

我们能看到运行结果,代码在交替运行,也就是说我们上面的两个函数在cpu运行,而并没有让cpu“休息”,如果你不太愿意相信它是多线程那么可以从运行速度上来进行比较;

threading模块

  1. import time
  2. import threading
  3. # 实现多线程的第一种方式:
  4. def song(name):
  5. for i in range(5):
  6. time.sleep(0.1)
  7. print("正在听歌:%s" %(name))
  8. def code(name):
  9. for i in range(5):
  10. time.sleep(0.3)
  11. print("正在编码:%s" %(name))
  12. # song('hello') # 15s
  13. # code('hello') # 10s
  14. t1 = threading.Thread(target=song, args=("sunshine",))
  15. t2 = threading.Thread(target=code, args=("python",))
  16. t1.start()
  17. t2.start()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/74890
推荐阅读
相关标签
  

闽ICP备14008679号