server
import socket
from threading import thread
def server(conn):
while true:
try:
data=conn.recv(1024)
except exception:
continue
if data==b'q':
print('關閉子執行緒連線')
break
conn.send(data.upper())
if __name__ == '__main__':
soc = socket.socket()
soc.bind(('127.0.0.1', 8080))
soc.listen(2)
while true:
conn, addr = soc.accept()
print(f'已連線')
t=thread(target=server,args=(conn,))
t.start()
client
import socket
soc=socket.socket()
soc.connect(('127.0.0.1',8080))
while true:
inp=input('請輸入')
data=inp.encode()
soc.send(data)
get_data=soc.recv(1024)
print(get_data)
每當有乙個客戶端傳送請求的時候,服務端就會建立乙個連線,因為服務端始終都是卡在 conn, addr = soc.accept()這一步,也就是等待連線建立的這一步,只要有連線他就會繼續往下走,然後就完事了,接下來都很簡單。 shell多執行緒 2 之基於管道實現併發
在shell指令碼裡批量執行程式是比較常見的方式,如果程式很多,每個執行時間比較長,則順序執行需要花費大量的時間。此時併發就成為我們考慮的方向。上篇 shell多執行緒 中我們已經簡單實現了基於for迴圈的併發,可以顯著提高工作效率 缺點是cpu的核心不是無限的,如果全部占用,則會影響系統的正常執行...
同步,多執行緒 ,多執行緒方式實現併發。
io請求幾乎不佔cpu的。同步請求相當於排隊買東西,乙個卡主了,其他的都結不了賬了。執行緒並不是越多越好,如果他特別多還不如同步高,所以對執行緒要有個限制,所以就出現了執行緒池,執行緒池在python3裡才有的,python2裡沒有的。建立程序的話是耗費很多資源的,建立執行緒是幾乎不耗費資源的。建立...
多執行緒併發佇列實現
2.使用 wait notify 實現乙個佇列,佇列有2個方法,add 和 get add方法往佇列中新增元素,get方法往佇列中獲得元素。佇列必須是執行緒安全的。如果get執行時,隊列為空,執行緒必須阻塞等待,直到有佇列有資料。如果add時,佇列已經滿,則add執行緒要等待,直到佇列有空閒空間。1...