当前位置: 首页 > news >正文

python中websockets与主线程传递参数

目录

一、子线程创建websockets服务端接收客户端数据

二、主线程内启动子线程接收并处理数据

一、子线程创建websockets服务端接收客户端数据并存入队列

发送的消息客户端与服务端统一,多种消息加入判断的标签

服务端:web_server.py

import asyncio
import json
import base64
import queue
import threading
import time
import cv2
import moment
import numpy as np
import requests
import websocketsclass WebServer:def __init__(self, host, port):self.host = hostself.port = portself.msg_queue = queue.Queue()self.clients = []self.flag = Trueasync def echo(self, websocket, path):client_ip, client_port = websocket.remote_addressself.clients.append(websocket)while True:try:# 在这里处理收到的消息# async for recv_text in websocket:recv_text = await websocket.recv()with open("aa.txt","w") as f:f.write(recv_text)data = json.loads(recv_text)#if type(data) is not dict: # 判断数据#    continueself.msg_queue.put(res)except websockets.ConnectionClosed:print("ConnectionClosed...", websocket.remote_address)  # 链接断开self.clients.remove(websocket)breakexcept websockets.InvalidState:print("InvalidState...", websocket.remote_address)  # 无效状态self.clients.remove(websocket)breakexcept Exception as err:print("ws:", err)passdef connect(self):asyncio.set_event_loop(asyncio.new_event_loop())start_server = websockets.serve(self.echo, self.host, self.port)asyncio.get_event_loop().run_until_complete(start_server)asyncio.get_event_loop().run_forever()print("连接成功!")def run(self):t = threading.Thread(target=self.connect)t.start()print("已启动!")

二、主线程内启动子线程接收并处理数据

收到消息后根据情况处理消息

主线程调用服务端:main.py

from web_server import WebServerclass MainThread:def __init__(self):self.ws = WebServer("192.168.6.28", 8000)self.ws.run()def run(self):while True:try:data = self.ws.msg_queue.get()# flag = data.get("flag")  # 内容标签 判断是否是自己想要的内容# if not flag:#    continuetry:# 处理数据print(data)passexcept Exception as e:print("报错:", e)except Exception as err:print("报错:", err)passif __name__ == '__main__':M = MainThread()M.run()

客户端:web_client.py

客户端连接服务端,并发送消息

import jsonimport websocketclass WebClient:def __init__(self, host, port):self.host = hostself.port = portself.conn = Noneself.flag = Falsedef connect(self):try:url = f"ws://{self.host}:{self.port}"self.conn = websocket.create_connection(url)self.flag = Trueexcept Exception as err:self.flag = Falsedef close(self):self.conn.close()def recv(self):data = self.conn.recv(1024)print(data)def send(self, data):self.conn.send(data)if __name__ == '__main__':host = "192.168.6.28"# host = "127.0.0.1"port = 8000ws = WebClient(host, port)if not ws.flag:ws.connect()with open("bb.txt") as f:data = f.read()ws.send(data)

相关文章:

python中websockets与主线程传递参数

目录 一、子线程创建websockets服务端接收客户端数据 二、主线程内启动子线程接收并处理数据 一、子线程创建websockets服务端接收客户端数据并存入队列 发送的消息客户端与服务端统一,多种消息加入判断的标签 服务端:web_server.py import asynci…...

js谐音梗创意小游戏《望子成龙》

🌻 前言 龙年到来,祥瑞满天。愿您如龙般矫健,事业腾飞;如龙鳞闪耀,生活美满。祝您龙年大吉,万事如意! 龙年伊始,我给各位设计了一款原创的小游戏,话不多说,直…...

第十篇:node处理404和服务器错误

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录</...

左右互博。

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 讨厌鬼在和小甜妹在玩石头游戏。 游戏一开始有 nnn 堆石子&#xff0c;第 iii 堆石子&#xff0c;有 aia_iai​ 个石子。两人轮流进行游戏。 轮到某个人时&#xff0c;这个人先选数量为 x(x&…...

android通过广播打印ram使用信息

在内存非常吃紧的情况下&#xff0c;android设备会开始kill部分非系统进程甚至系统进程来保证基本的系统运行。在这种情况下如何获取设备过去某段时间的ram使用情况至关重要。 通过开发者模式中的“内存”可以完美得知设备内存使用信息。 我们可以通过此途径&#xff0c;设计一…...

内存管理——线性内存,进程空间

低2G为进程空间 开始地址结束地址大小属性00xFFFFF1M保留0x1000000x102FFF栈不固定位置、大小0x1030000x143FFF堆不固定位置、大小0x400000主程序文件不固定位置、大小加载dll不固定位置、大小0x7ffdd000TIB位置&#xff0c;大小编译时固定0x7FFFE000系统与用户共享数据块位置…...

入门Python必读的流程控制语句

流程控制 if-else 语法: if 条件:语句else:语句 例子: a1 #使用方式一 if a>1:print(大于1) else:print(小于等于1) #使用方式二 print(大于1) if a>1 else print(小于等于1) 输出: >>小于等于1 >>小于等于1 if-elif-else 语法: if 条件:语句elif 条件:…...

day05-进程通信

1> 将互斥机制的代码实现重新敲一遍 代码&#xff1a; #include<myhead.h>int num520;//临界资源//1.创建互斥锁 pthread_mutex_t fastmutex;//定义任务函数 void *task1(void *arg){printf("1111111\n");//3.临界区上面获取锁资源&#xff08;上锁&#…...

如何将OpenAI Sora生成的普通AI视频转化为Vision Pro的空间视频,沉浸式体验

【基于AI的Vision Pro空间视频】工作流:这个工作流程用于将2D视频转换为适用于 Vision Pro的Spatial视频: 1、使用Deep3D将2D视频转换为3D SBS: 使用Deep3D工具将2D视频转换为3D SBS格式: 转换例子:Prediction– lucataco/deep3d – Replicatehttps://replicate.com/…...

爬虫基础(下)

requests模块可以用来获取网络数据&#xff1b; 那么对于爬虫来说&#xff0c;要获取下图网页中的内容&#xff0c;就需要网页的URL。 复制链接方法是&#xff0c;打开网页&#xff0c;点击链接框&#xff0c;右键选择复制。 requests.get()函数可用于模拟浏览器请求网页的过…...

【八股文面试】Java基础常见面试题总结(上)

Java基础常见面试题总结(上) Java有哪些特性 简单易学&#xff1b;面向对象&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;&#xff1b;平台无关性&#xff08; Java 虚拟机实现平台无关性&#xff09;&#xff1b;支持多线程&#xff08; C 语言没有内置的多…...

c++:蓝桥杯的基础算法2(构造,模拟)+练习巩固

目录 构造 构造的基础概念&#xff1a; 模拟 练习1&#xff1a;扫雷 练习2&#xff1a;灌溉 练习3&#xff1a;回文日期 构造 构造的基础概念&#xff1a; 构造算法是一种用于解决特定问题的算法设计方法。在C语言中&#xff0c;构造算法通常涉及到创建一个函数或类来实…...

C++ 和 C#的区别

如是我闻&#xff1a; C#&#xff08;发音为 “C sharp”&#xff09;和C是两种流行的编程语言&#xff0c;它们各有特点和用途。下面是这两种语言的一些主要区别&#xff1a; 设计理念和用途: C: 是一种多范式编程语言&#xff0c;支持过程化编程、面向对象编程、泛型编程等。…...

2.14日学习打卡----初学Zookeeper(一)

2.14日学习打卡 目录: 2.14日学习打卡Zookeeper概念一. 集中式到分布式单机架构集群架构什么是分布式三者区别 二. CAP定理分区容错性一致性可用性一致性和可用性的矛盾一致性和可用性如何选择 三. 什么是Zookeeper分布式架构Zookeeper从何而来Zookeeper介绍 四. 应用场景数据发…...

SkyWalking之APM无侵入可观测原理分析

一、 简介&#xff08;为什么需要用到可观测能力&#xff09; 随着微服务的开发模式的兴起&#xff0c;早期的单体架构系统已拆分为很多的子系统&#xff0c;各个子系统封装为微服务&#xff0c;各服务间通过HTTP协议RESET API或者RPC协议进行调用。 在单体服务或者微服务较少的…...

Missing artifact org.yaml:snakeyaml:jar:1.29

关于导入本地maven项目pom.xml出现missing artifact org....报错处理 环境变量配置maven&#xff0c;eclipse中配置maven&#xff0c;重启eclipse。...

三opencv源码解压及环境变量配置

1.双击opencv-3.4.6-vc14-vc15.exe 2.选择解压的路径&#xff0c;点击【extract】 3.设计环境变量...

vue实时监控视频播放的进度,并在播放80%位置触发相应操作

video标签&#xff1a;播放时触发canplay事件 <video:src"filePath"controlsv-if"filePrefix mp4 || filePrefix avi"canplay"getVideoDur()"id"myVideo"class"preview"></video>canplay触发的方法&#xff…...

HTML+CSS滚动条样式如何单独给firefox设置 scrollbar-width: none;,而不影响其他浏览器

要在Firefox中单独设置滚动条样式,你可以使用​​@-moz-document​​规则。这个规则允许你为特定的浏览器或浏览器引擎应用样式。 下面是一个例子,演示如何在Firefox中隐藏滚动条: @-moz-document url-prefix() {/* 在这里添加只对Firefox生效的样式 */body {scrollbar-wi…...

《Go 简易速速上手小册》第2章:控制结构与函数(2024 最新版)

文章目录 2.1 条件语句:决策的艺术2.1.1 基础知识讲解2.1.2 重点案例:用户角色权限判断实现用户角色权限判断扩展功能实现代码功能扩展:添加或删除用户2.1.3 拓展案例 1:成绩等级判断实现成绩等级判断功能实现代码扩展功能:详细反馈...

谷歌DeepMind让AI学会“主动查资料“

这项由爱丁堡大学与谷歌DeepMind联合开展的研究&#xff0c;以预印本形式发布于2026年5月13日&#xff0c;论文编号为arXiv:2605.13050v1&#xff0c;有兴趣深入了解的读者可以通过该编号查询完整论文。**研究概要**假设你有一位助理&#xff0c;学识渊博&#xff0c;但所有知识…...

工业以太网IO模块级联技术:从Modbus TCP到MQTT的部署实践

1. 项目概述&#xff1a;为什么我们需要“可级联”的工业IO模块&#xff1f;在工业自动化现场摸爬滚打十几年&#xff0c;最头疼的事情之一就是布线。一个车间里&#xff0c;PLC、传感器、执行器、仪表星罗棋布&#xff0c;传统的IO模块要么通过现场总线&#xff08;如Profibus…...

成都不良资产收包出包难?专业处置破局存量盘活困境

不仅如此&#xff0c;规范化的不良资产处置模式&#xff0c;还能助力区域化解债务风险&#xff0c;稳定地方金融环境&#xff0c;激活存量资产活力&#xff0c;对地方经济发展起到正向推动作用。不良资产收包出包&#xff0c;拼的从来不是蛮力与时间&#xff0c;而是专业、合规…...

标题:【2026 最全】CTF 零基础入门指南|小白必看,一篇封神!

前言 CTF&#xff08;Capture The Flag&#xff09;中文一般译作夺旗赛&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。发展至今&#xff0c;已经成为全球范围网络安全圈流行的竞赛形式&#xff0c;而DEFCON作为CTF赛制的发源地&#xf…...

如何3步解决Mac NTFS读写难题:Nigate终极免费开源方案

如何3步解决Mac NTFS读写难题&#xff1a;Nigate终极免费开源方案 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and management fo…...

百考通:AI赋能期刊论文写作,智能生成优质内容

在学术研究领域&#xff0c;期刊论文的撰写是成果输出的关键环节&#xff0c;却也让众多科研工作者与学生倍感压力&#xff1a;选题迷茫、逻辑梳理困难、格式规范复杂、内容提炼耗时&#xff0c;严重拖慢了学术成果的发表节奏。百考通&#xff08;https://www.baikaotongai.com…...

终极指南:如何快速免费解决GBK到UTF-8编码转换难题

终极指南&#xff1a;如何快速免费解决GBK到UTF-8编码转换难题 【免费下载链接】GBKtoUTF-8 To transcode text files from GBK to UTF-8 项目地址: https://gitcode.com/gh_mirrors/gb/GBKtoUTF-8 还在为乱码文件而烦恼吗&#xff1f;GBKtoUTF-8是一款专为中文文本编码…...

3个高效方法解决抖音素材管理难题:从零散文件到有序素材库

3个高效方法解决抖音素材管理难题&#xff1a;从零散文件到有序素材库 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…...

Python 中的 @property:像访问属性一样调用方法

# Python 中的 property&#xff1a;像访问属性一样调用方法在写类的时候&#xff0c;我们经常会遇到一个问题&#xff1a; 对象的属性如果可以被随便修改&#xff0c;就可能出现一些不合理的数据。比如一个人的年龄&#xff1a;python class Person:def __init__(self, age)…...

告别刺耳噪音!ESP32 PWM驱动无源蜂鸣器,从调频到调占空比的音效实战

ESP32音效魔法&#xff1a;PWM驱动无源蜂鸣器的进阶实战指南 从刺耳噪音到悦耳旋律的蜕变之旅 当无源蜂鸣器发出刺耳的"滴滴"声时&#xff0c;很多创客的第一反应是降低音量或缩短发声时间。但真正的解决方案藏在ESP32的PWM&#xff08;脉冲宽度调制&#xff09;模块…...