python学习笔记(62) 多线程

进程是资源分配的最小单位(数据隔离),线程是cpu调度的最小单位,每个进程至少有一个线程

能直接被cpu调度的是线程,轻型实体

共享进程资源,可以并发执行,全局变量在多个线程之间共享

用户级线程,内核级线程,混合实现

全局解释器锁 GIL:同一时刻只能有一个线程来访问cpu

同一进程的不同线程在不同的cpu核心运行导致数据安全性问题

锁的是线程,会导致效率降低

不是python语言的问题,是Cpython解释器的特性

在Cpython解释器下的python程序,在同一时刻,多线程中只能有一个线程被cpu执行

对于高CPU的计算类,多线程优势不大

对于高IO的类型,多线程优势很大

  爬虫、聊天、处理日志、处理web请求、读写数据库

py是解释型语言,解释型语言还没有能真正解决多核安全性问题的

java是编译型语言

threading.current_thread()

threading.active_conut()  # 主线程也计算在内

threading.enumerate()  # 枚举子线程

##################################################

多线程实现sever

import socket
from threading import Thread

def serve(conn):
while True:
conn.send(b'Hello')
msg = conn.recv(1024).decode('utf-8')
print(msg)
conn.close()


sk = socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()
while True:
conn,addr = sk.accept()
p = Thread(target= serve,args=(conn,))
p.start()
sk.close()

猜你喜欢

转载自www.cnblogs.com/farion/p/10023442.html