回顾下,什么是线程?
线程被称作轻量级进程。与进程类似,不过它们是在同一个进程下执行的。
并且它们会共享相同的上下文。当其他线程运行时,它可以被抢占(中断)和临时挂起(也称为睡眠) ;
线程的轮询调度机制类似于进程的轮询调度。只不过这个调度不是由操作系统来负责,而是由Python解释器来负责。
GIL锁
遇到阻塞就自动切换。
因此可以利用这种机制来有效的避开阻塞 ~
充分利用CPU。
>>>使用多进程实现并发服务器
>>>使用多线程实现并发服务器
# 线程中的逻辑
>>>def worker(conn):
# 每生成一个对等连接套接字,就生成一个线程,并交由这个线程去服务
>>>thread = threading.Thread(target=worker, args=(conn,))
# 启动线程
>>>thread.start()
效果,棒棒哒~
多进程与多线程的最大不同在于,多进程中,同一个变量,各自有一份拷贝存在于每个进程中,互不影响。而多线程中,所有变量都由所有线程共享,所以,任何一个共享变量都可以被任何一个线程修改。因此线程之间共享数据最大的危险在于多个线程同时改变一个变量。