‘’‘
1.GIL全局解释器锁:
1.GIL是Cpython特有的。
2.GIL本质上是一个互斥锁.
3.GIL的为了阻止同一个进程内多个线程同时执行(并行)
- 单个进程下的多个线程无法实现并行,但能实现并发 4.这把锁主要是因为CPython的内存管理不是 "线程安全" 的. - 保证线程在执行任务时不会被垃圾回收机制回收。
2.GIL存在的目的:
GIL的存在就是为了保证线程安全的.
注意: 多个线程过来执行,一旦遇到IO操作,就会立马释放GIL解释器锁,交给下一个先进来的线程.
3.何时使用多进程或多线程?
- 在计算密集型的情况下:
- 使用多进程
- 在IO密集型的情况下: - 使用多线程 - 高效执行多个进程,内多个IO密集型的程序: - 使用 多进程 + 多线程 -
'''
4.服务端实现并发
import socket from threading import Thread import time """ 服务端: 1.有固定的IP和PORT 2.24小时不间断提供服务 3.能够支持并发 """ server = socket.socket() server.bind(( '127.0.0.1', 9550 )) server.listen(5) print('启动服务端。。。') def working(conn): while True: try: data = conn.recv(1024) if len(data) == 0: break print(data.decode('utf-8')) time.sleep(1) conn.send(data.upper()) except Exception as e: print(e) break conn.close() while True: conn, addr = server.accept() print(addr) # 这里实现并发 t = Thread(target=working, args=(conn,)) t.start()