python socket多线程和多进程

在socket中,如果直接创建的话,是只能接受一个用户的请求
需要实现socketserver中的handle方法,可以实现多进程并发访问

SocketServer内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求的Socket服务端。即:每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个“线程”或者“进 程” 专门负责处理当前客户端的所有请求。

1、创建一个继承自 socketserver.BaseRequestHandler 的类,类中必须定义一个名称为 handle 的方法
2、启动ThreadingTCPServer

import socketserver
class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
        conn = self.request
        conn.sendall("我是一个多线程".encode())
        Flag = True
        while Flag:
            data = conn.recv(1024)
            if data.decode() == "exit":
                Flag = False
            conn.sendall(data)

if __name__ == "__main__":
    server = socketserver.ThreadingTCPServer((‘127.0.0.1‘,8009),MyServer)
    server.serve_forever()
客户端直接使用原来的客户端代码即可。

ThreadingTCPServer
ThreadingTCPServer实现的Soket服务器内部会为每个client创建一个 “线程”,该线程用来和客户端进行交互。

原文地址:http://blog.51cto.com/13723193/2109117

时间: 2024-12-10 13:09:02

python socket多线程和多进程的相关文章

Python的多线程和多进程模块对比测试

本文主要对比测试Python的多线程和多进程模块在CPU类型和I/O的任务操作时的效率 一 测试CPU消耗类型任务 在一台多核CPU的服务器上执行多线程代码,理论上代码执行时会利用多余的CPU核心来提升性能.但是由于Python的GIL的存在,使用多线程来执行CPU繁重的任务,未必能得到性能提升.但是GIL又必不可少,因为在Python解释器中执行线程是不安全的,也就是说为了保证Python线程执行时的安全,Python提供了一个全局锁,同一时刻,只允许一个线程获得这个全解锁并执行. CPU消耗

Python的多线程与多进程实践

最近要产生大量的”假“的电话号码,所以就写了一个自动产生电话号码程序,产生了一百万条数据,然后把数据放到一个文件中. 死跑版: # -*- coding: utf-8 -*- # 以下是中国的手机号码分段情况 # 新联通 (中国联通+中国网通)手机号码开头数字 130.131.132.145. # 155.156.185.186 # 新移动 (中国移动+中国铁通)手机号码开头数字 134.135.136.137. # 138.139.147.150.151.152.157.158.159.182

python的多线程和多进程

要使用Python的多线程,首先要了解一个概念.GIL(global interpreter lock),翻译过来就是以解释器为单位的全局锁. 用过线程锁的都知道,LOCK就是用来管理住线程,让一个指定的线程先运行,其他的先暂停(等待),避免线程的混乱,尤其是在共用变量的情况下. GIL也是一样的概念,但是不同的是: 1.你可以想成他是解释器控制的 2.线程的指定是随机的 3.每个线程acquire运行机会后,可运行的内容很少(因此线程间的切换超级快) 因此,多线程看起来好像是多个线程一起运行,

python中多线程,多进程,队列笔记(一)

threading简介:If you want your application to make better use of the computational resources of multi-core machines, you are advised to use multiprocessing. However, threading is still an appropriate model if you want to run multiple I/O-bound tasks si

python之多线程与多进程

1. 多进程与多线程 (1)背景:为何需要多进程或者多线程:在同一时间里,同一个计算机系统中如果允许两个或者两个以上的进程处于运行状态,这便是多任务.多任务会带来的好处例如用户边听歌.边上网.边打印,而这些任务之间丝毫不会互相干扰.使用多进程技术,可大大提高计算机的运算速率. (2)多进程与多线程的区别: 进程:程序在计算机上的一次执行活动.进程分为:系统进程和用户进程. 当运行一个程序时,实际就是启动了一个进程.程序是死的(静态的),进程是活的(动态的). 线程:是程序中的一个单一的顺序控制流

python的多线程、多进程代码示例

多线程有两种方式:thread和threading 这里应用的场景是map数据分多线程.进度写入codis的示例 这是thread的示例:thread的主进程不会等待线程 import thread,math,threading,multiprocessing,os,time def writeToCodis(prefix,key_list,result_map): # client = BfdCodis("xxx", ) begin = int(time.time()) for ke

Python socket (多线程)

1 Server 端 code 2 3 import SocketServer 4 class MyTCPHandler(SocketServer.BaseRequestHandler): 5 """ 6 The RequestHandler class for socket server. 7 It is instantiated once per connection be established(request from client) to the socker se

基于Python的多线程与多进程

1.I/O密集型与计算密集型 多进程适用于I/O密集型 多进程适用于计算密集型 2.没有sleep(T)的多个死循环只能用多进程 3.模块介绍: 1)threading模块(_thread模块已淘汰)示例: 运行结果: 2)multiprocessing 模块演示: 代码结果: 3) concurrent.futures模块 执行结果: 原文地址:https://www.cnblogs.com/cepaAllium/p/11528994.html

appium 多线程还是多进程(转)

https://www.cnblogs.com/zouzou-busy/p/11440175.html 在前面我们都是使用一个机器进行测试,在做app自动化的时候,我们要测不同的机型,也就是兼容性测试,如果一台一台设备去执行,那就显的太麻烦了.所以经常需要我们启动多个设备,同时跑自动化测试用例,要跑多个设备时,首先要启动多个appium服务. 启动多个appium服务 在之前我们都是在命令行里输入appium来启动appium服务,这样启动的默认端口是4723,我们可以使用-p参数来指定端口号,