server
#pool內的程序數預設是cpu核數,假設為4(檢視方法os.cpu_count())
#開啟6個客戶端,會發現2個客戶端處於等待狀態
#在每個程序內檢視pid,會發現pid使用為4個,即多個客戶端公用4個程序
from socket import *from
multiprocessing import pool
import os
server=socket(af_inet,sock_stream)
server.setsockopt(sol_socket,so_reuseaddr,1)
server.bind((
'127.0.0.1
',8080
))server.listen(5)
def talk(conn):
print(
'程序pid: %s
' %os.getpid())
while
true:
try:
msg=conn.recv(1024
)
if not msg:break
print(
"receive:{}
".format(msg))
conn.send(msg.upper())
except exception:
break
if __name__ == '
__main__':
p=pool(4
)
while
true:
conn,*_=server.accept()
client
from socket import *client=socket(af_inet,sock_stream)client.connect((
'127.0.0.1
',8080))
while
true:
msg=input('
>>:
').strip()
if not msg:continue
client.send(msg.encode(
'utf-8'))
msg=client.recv(1024
) print(msg.decode(
'utf-8'))
python3 程序池版的socket併發聊天
pool內的程序數預設是cpu核數,假設為4 檢視方法os.cpu count 開啟6個客戶端,會發現2個客戶端處於等待狀態 在每個程序內檢視pid,會發現pid使用為4個,即多個客戶端公用4個程序 tcp server.py coding utf 8 import osfrom socket im...
Socket多人聊天MFC版
學習彙總 持續更新 從零搭建後端基礎設施系列 一 背景介紹 coding 環境 vs2015 win10 測試環境 vm虛擬機器 xp系統 2003server和主機win10 語言 c 類庫mfc 功能 基於伺服器 訊息的多人聊天。主要原理 server給每個連上的client都建立乙個執行緒單獨...
併發程式設計 執行緒池與程序池
以時間換空間 程序池 乙個容器,這個容器限制住你開啟程序的數量,預設是os.cpu count 我的電腦是8核,所以能開啟8個,第一次肯定只能並行的處理8個任務,只要有任務完成,程序馬上就會接下乙個任務。實現 from concurrent.futures import processpoolexe...