python tcp server分包_如何创建线程池来监听tcpserver包python
我试图创建线程池来同时对传入的tcp包执行一些操作。在
我在python3中找不到任何内置线程池。我也读了一些关于multiprocessing.Pool的文章,但是它不支持内存共享。所以我使用Queue来模拟线程池。在
为每个线程创建一个队列是否更好?
有没有人有建议或更好的解决方案来改进以下自定义线程池代码?在import socketserver
import threading
from queue import Queue
class ThreadPool:
tcp_queue = Queue()
# redis = redis connection
def __init__(self, thread_worker_numbers=10):
for i in range(thread_worker_numbers):
threading.Thread(target=self.worker).start()
def worker(self):
while True:
packet = self.tcp_queue.get()
print('thread: %s received packet: %s' % (threading.current_thread().getName(), packet))
# TODO do process on packet
def queue(self, packet):
self.tcp_queue.put(packet)
def queue_count(self):
return self.tcp_queue.qsize()
class TCPServerHandler(socketserver.BaseRequestHandler):
thread_pool = ThreadPool()
def handle(self):
# self.request is the TCP socket connected to the client
self.data = self.request.recv(1024).strip()
packet = self.data.decode("utf-8")
print(packet)
self.thread_pool.queue(packet)
# print("%s wrote: %s" % (self.client_address[0], packet))
# just send back the same data, but upper-cased
self.request.sendall(bytes('{ok: 1, msg:""}', 'utf-8'))
if __name__ == "__main__":
HOST, PORT = "0.0.0.0", 9999
# Create the server, binding to localhost on port 9999
server = socketserver.TCPServer((HOST, PORT), TCPServerHandler)
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
server.serve_forever()
相关文章:

R语言 股价分析
首先判断股价的分布是不是正态分布: #获取3m公司收盘价 mmmdata read.csv("E:\\kuaipan\\A Introduction to Analysis of Financial Data with R\\chapter 1\\ch1data\\d-mmm-0111.txt",header T) mmmprice as.numeric(sapply(mmmdata, function(l){substring(l,1…

JavaのFile类基础操作之问题
在上一章节,介绍了File类的基础操作,比如文件的创建,文件的删除等等。这一章节,将介绍在File类基础操作中遇到的问题。 1.路径分割符问题 在实际的软件开发与运行过程中,往往都会在Windows环境下进行项目的开发&#x…

把时间当作朋友(第一版)笔记
平生第一次下载并阅读了电子版的关于学习类型的书籍,并且用软件(MindManager)记录了读书摘要(其实最多能叫摘录),不过也不妨碍我发篇随笔记录下。 平常,我更喜欢读纸质的书籍,用日志本记录笔记&…

python中执行linux命令(调用linux命令)_Python调用Linux bash命令
import subprocess as sup # 以下注释很多(为了自己以后不忘), 如果只是想在python中执行Linux命令, 看前5行就够了# 3.5版本之后官方推荐使用sup.run()sup.run("ls -l", shellTrue) # 如果参数args是字符串, shell要设置为Truesup.run(("ls", "-l&…

IOS中CoreLocation框架地理定位
1.CoreLocation框架使用前提: #import <CoreLocation/CoreLocation.h> CoreLocation框架中所有数据类型的前缀都是CL ,CoreLocation中使用CLLocationManager对象来做用户定位 2.CLLocationManager的常用操作: 开始用户定位 - (void)sta…

Your First Concordion.Net Project (Part 5)-Running Specs with Gallio
http://living-in-concordion.blogspot.com/2009/05/your-first-concordionnet-project-part-5.html 需要一些自动运行Spec的Runner,这里采用的为Gallio写的一个插件。 Gallio是一个开源的测试框架,能够运行各种.net的测试框架,具有较高的扩展…

Vue学习的路径
接下来我将正式学习Vue,根据Vue作者所给的学习路径进行学习。每天做好学习笔记。 vue学习路径和建议----尤雨溪 vue官网

ssh mysql环境搭建 myeclipse_MyEclipse整合ssh三大框架环境搭载用户注册源码下载
前言SSH不是一个框架,而是多个框架(strutsspringhibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序。集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域…

IIS7.5 HTTP 错误 500 调用loadlibraryex失败的解决方法
在IIS7.5打开网页的时候,提示: HTTP 错误 500.0 - Internal Server Error 调用 LoadLibraryEx 失败,在 ISAPI 筛选器 C:\Windows\Microsoft.NET\Framework\v4.0.30319\\aspnet_filter.dll,经过排除发现原来是两个斜杠导致在IIS7.5打开网页的时…

Android学习笔记之progressBar(进度条)
一、说明 <1>在某项延续性工作的进展过程中为了不让用户觉得程序死掉了,需要有个活动的进度条,表示此过程正在进行中。 <2>在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,…

在hadoop上运行python_hadoop上运行python程序
数据来源:http://www.nber.org/patents/acite75_99.zip首先上传测试数据到hdfs:[rootlocalhost:/usr/local/hadoop/hadoop-0.19.2]#bin/hadoopfs -ls /user/root/test-inFound 5 items-rw-r--r-- 1root supergroup101 2010-10-24 14:39 /user/root/test-…

leetcode 237: Delete Node in a Linked List
题目: Write a function to delete a node (except the tail) in a singly linked list, given only access to that node. Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, the linked list should become…

一次奇怪的AP注册异常问题处理
很久没遇到值得分享的经验,今天遇到一个问题,处理过程很有意思,和大家一起分享一下。有一个客户部署华三的一套无线,采用控制器瘦AP的方式。部署过程都是轻车熟路,配置全部完成,静等AP上线,这时…

今天是第一次开博客,for--futurechild!!!
今天刚刚开了一个博客,或许觉得每一个比较牛叉的人都会经历一个不平凡的过程。通往高手之路是一个及其不平凡的路途。学校教育不能培养出真正高手。学习的最高境界是---悟。自己一步一个脚印最终能到达高手的殿堂。当然,我也希望能记录下自己的这个过程。…

memcache php mysql_PHP中的数据库二、memcache
在一个高并发的web应用中,数据库存取瓶颈一直是个大问题,一旦达到某个极限,数据库很容易崩溃,但是如果我们把常用的数据放到内存中,在需要的时候从内存中取,不光读取速度快,而且节约数据库IO。m…

JavaScript sync and async(同步和异步)
推荐四篇文章: JavaScript 是单线程的深入分析JavaScript 运行机制详解:再谈 Event LoopJavaScript 异步编程的4种方法JavaScript 既是单线程又是异步的,请问这二者是否冲突,以及有什么区别?一个重要前提:J…
掌握 MySQL 这 19 个骚操作,效率至少提高3倍
本文我们来谈谈项目中常用的MySQL优化方法,共19条,利用好这19条方法,会让你的效率提升至少3倍。1、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1、2、3、4、5…

对于PS和flash协作做过光字的一点心得
上次一个朋友要求要帮忙帮他网站BANNER上面做个透明的过光字FLASH,要求必须是PS处理的字的效果再用过光字做成FLASH。。。 导入PS生成的文字效果PNG透明图片,直接新建图层,放下面,画个过光的效果,结果没有过光效果&…

mysql 5.6 binlog_format_ROW 格式binlog 在MySQL5.6上的数据恢复实验
5.6和5.7版本的MySQL,有个参数binlog_row_image,默认值为FULL,表示记录的是全部的binlog操作日志(仅在binlog_formatROW时候生效)。此外binlog_row_image还可以是minimal,表示binlog记录的就只是影响后的行。如此一来使用ROW格式就…

Appium学习笔记2_Android获取元素篇
在利用Appium做自动化测试时,最重要的一步就是获取对应的元素值,根据元素来对对象进行对应的操作,如果获得对象元素呢? Appium Server Console其实提供了一个界面对话框"Inspector",但是一般情况下,它无法获…

C#制作安装包
软件项目编码完工后,接下来就是制作安装包了.有一些人对制作安装包不屑一顾,但我认为这是软件工程中必不可少的环节,就如何包装商品一样.我曾经经过一个星期的研究,学会了如何制作安装包. 我做的一个安装包是可以操作配置文件的,具体步骤如下: 1)在我已经开发好的解决方案项目…

ThunderGBM:快成一道闪电的梯度提升决策树
想在 GPU 上使用使用闪电般快速的提升方法?了解这个库就好了。在很多任务上,它都比 LightGBM 和 XGBoost 快。尽管近年来神经网络复兴并大为流行,但提升算法在训练样本量有限、所需训练时间较短、缺乏调参知识等场景依然有其不可或缺的优势。…

cyclicbarrier java_Java并发编程之CyclicBarrier和线程池的使用
原标题:Java并发编程之CyclicBarrier和线程池的使用下面我们来讲述一下线程池和CyclicBarrier的使用和对比。一、场景描述有四个游戏玩爱好者玩游戏,游戏中有三个关卡,每一个关卡必须让所有玩家到达后才能允许通过。其实这个场景里的玩家中如…

在CentOS 7中安装与配置Tomcat-8方法
安装前提 在CentOS 7中安装与配置JDK8 安装tomcat apache-tomcat-8.0.14.tar.gz文件上传到/usr/local中执行以下操作: [rootlocalhost ~]# cd /usr/local [rootlocalhost ~]# tar -zxv -f apache-tomcat-8.0.14.tar.gz // 解压压缩包 [rootlocalhost ~]# rm -rf …
java I/O总结(收藏)
Java I/O总结——InputStream By: 海市蜃楼 | In: Android开发 22十一2009在前面介绍了Decorator(装饰)模式,让我自己想起了刚开始工作时那段“痛并快乐”的学习时光。在学习Android网络方面,也发现网络方面的很多内容都与Java I/…

我了解到的新知识之——电热水器用电安全
今天写一篇文章和大家分享一个与科技产品无关的话题,就是关于我们每天都会使用的电热水器。到底出了什么问题呢?我在今天准备打开热水器时,发现按下开关之后没有反应,于是就去查看漏电保护器,发现漏电保护器和墙面上的…

android native java_在Android Native层中创建Java虚拟机实例
前言Android应用中JNI代码,是作为本地方法运行的。而大部分情况下,这些JNI方法均需要传递Dalvik虚拟机实例作为第一个参数。例如,你需要用虚拟机实例来创建jstring和其他的Java对象、查找类或成员变量等。大部分情况下,在你用JNI接…

Qt 学习之路:模型-视图高级技术
PathView PathView是 QtQuick 中最强大的视图,同时也是最复杂的。PathView允许创建一种更灵活的视图。在这种视图中,数据项并不是方方正正,而是可以沿着任意路径布局。沿着同一布局路径,数据项的属性可以被更详细的设置࿰…

3.7Python数据处理篇之Numpy系列(七)---Numpy的统计函数
目录 目录前言(一)函数一览表(二)统计函数1(三)统计函数2目录 前言 具体我们来学Numpy的统计函数 (一)函数一览表 调用方式:np.* .sum(a)对数组a求和.mean(a)求数学期望.…

android图像处理系列之三--图片色调饱和度、色相、亮度处理
原图: 处理后: 下面贴代码: 一、图片处理层: package com.jacp.tone.view; import java.util.ArrayList; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.gra…