一. python的线程
多线程:多线程可以共享本进程中的数据,但是不稳定,如果服务器用多线程来处理可能会因为其中一个线程崩了,而服务器就挂了,相反,多进程一般一个子进程错误,不会导致所有子进程都错误,但是主进程挂了,其他照样都挂。
对于python的多线程实现,其实只是一个线程在跑,不断地进行切换,不是真正的多线程,即使遇到多核cpu,多核cpu只有一个核区发挥其作用,因此,python的多线程用于io密集型的操作中,而在cpu密集型的程序,反而变得更慢。
起因为GIL:
GIL:In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (However, since the GIL exists, other features have grown to depend on the guarantees that it enforces.)
之所以有GIL这个大坑主要是因为线程安全,python在多线程中为了使其能够实现线程安全,提高其性能,即在多线程下,不会对全局变量或者静态变量进行污染。通过这样的一个锁,使拥有GIL的线程才能运行ÿ