python并发编程4-线程
生活随笔
收集整理的這篇文章主要介紹了
python并发编程4-线程
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
進程的出現(xiàn)
?
原來一臺服務器只能執(zhí)行一個任務。
進程的出現(xiàn),可以讓一臺服務器處理多個任務。多個任務間進行切換,記錄每個任務當前執(zhí)行到哪里,記錄有哪些數(shù)據(jù)。然后進行切換
每個進程區(qū)分開每個任務所能占有的內(nèi)存空間
進程的缺點
線程的出現(xiàn):
進程就是為了隔離內(nèi)存出現(xiàn)的。操作系統(tǒng)在調(diào)度進程,
進程切換所需要的資源很大
線程切換幾乎不浪費資源
車間切換和人操作機器的切換所需要的人力物力都不一樣,線程的切換開銷非常小
進程和線程的關(guān)系
?線程的特點:
?使用線程的例子
?
線程的啟動方法一:
?
線程的啟動方法二(使用面向?qū)ο蟮姆绞?#xff09;:
過程分析:
同一個進程中的多個線程可能在不同cpu上運行全局解釋器鎖:(對線程加鎖)
數(shù)據(jù)加鎖
GIL鎖的切換
多線程實現(xiàn)qq聊天:
server端:
import socket from threading import Threaddef func(conn):while True:conn.send(b'hello')msg = conn.recv(1024).decode('utf-8')if msg=='q':conn.close()breakprint(msg)info = input('>>>').encode('utf-8')conn.send(info)conn.close()sk=socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen()while True:conn, addr = sk.accept()t=Thread(target=func,args=(conn,)).start() sk.close()# 子進程中不能用input # 子線程可以 # def demo(n): # inp=input('%s:'%n) # print(inp) # for i in range(5): # t=Thread(target=demo,args=('name%s'%i,))client端:
?
運行結(jié)果:
線程中的其他方法:
總結(jié)
以上是生活随笔為你收集整理的python并发编程4-线程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 径向基神经网络_谷歌开源Neural T
- 下一篇: grpc服务器和客户端互传数据