python 多线程和异步

python 多线程和异步

September 21, 2018
Python, Multithreaded

python 的多线程还有协程这种东西。

线程池 #

关于多线程的实现,各种语言基本上都是一样的。

  1. 一种是集成一个线程的基类,然后重写一个run()函数。这类写法比较好理解,非常直观就是创建一个线程交给操作系统。

    因为每个线程都有确定的程序起点、执行顺序、程序终点。因此这个函数就是起点。

  2. 另外一种就略有区别,Java中就是实现一个接口,在python中没有接口就是直接传个函数去构造出一个线程。Java中的接口其实很不好理解,因为这个接口只是实现了一个逻辑在run()函数里, 实例化这个类的时候并没有创建这个线程,还要单独用这个类的实例去再实例化一个线程。然后在start这个线程。

无论是那一种,在底层都是一样的。就是把一段逻辑写进一个函数中,作为一个起点用来生成一个线程资源。而这个工作,都是基类Thread来实现的。

因此只要给Thread类一个程序入口就可以构造出一个线程了。

线程的启动和设定都很好解决。有一个问题就是创建线程也是要话费时间的。因此就有线程池的思想。

线程池的优点:

  1. 避免线程的创建和销毁带来的性能开销。
  2. 避免大量的线程间因互相抢占系统资源导致的阻塞现象。
  3. 能够对线程进行简单的管理并提供定时执行、间隔执行等功能。

两个单词区分一下:async(异步)sync(同步)