专栏总目录
一、queue()的介绍
queue
是一个常见的数据结构,用于存储元素集合,并按照特定的顺序(通常是“先进先出”或FIFO)来添加或移除元素。在 Python 中,queue
模块提供了一个线程安全的队列实现。
二、具体使用
以下脚本实现:
1.建立tcp服务器,使用多线程接收数据
2.将接收到的数据,按照现后顺序存入数据队列
3.读取数据队列数据并打印
import socket
import threading
import queue
class tcp_server:
def __init__(self):
self.message_queue = queue.Queue()
self.lock = threading.Lock()
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.s.bind(('127.0.0.1', 9999))
self.s.listen(100)
print('【+】侦听在本地9999端口')
p = threading.Thread(target=self.print_data)
p.start()
while True:
conn, addr = self.s.accept()
if conn:
t = threading.Thread(target=self.get_data, args=(conn,))
t.start()
def get_data(self, conn):
while True:
try:
data = conn.recv(1024)
print('获得信息')
with self.lock:
self.message_queue.put(data.decode())
self.message_queue.task_done()
print('存入队列')
except:
pass
def print_data(self):
while True:
if self.message_queue.empty():
continue
message = self.message_queue.get()
print(message)
if __name__ == '__main__':
ts = tcp_server()
测试客户端脚本
import socket
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
c.connect(('127.0.0.1',9999))
while True:
data = input('>>>')
c.send(data.encode())