首页 > 编程语言 > 详细

python学习笔记(62) 多线程

时间:2018-11-26 22:49:14      阅读:197      评论:0      收藏:0      [点我收藏+]

进程是资源分配的最小单位(数据隔离),线程是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()

python学习笔记(62) 多线程

原文:https://www.cnblogs.com/farion/p/10023442.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!