socketserver模块源码中没找到get_request()的方法,原因????

服务器端--------------------------------------------------
import socketserver class MyServer(socketserver.BaseRequestHandler): # 定义一个类,必须要继承括号中的类
def handle(self): # 这个方法名字只能是这个,因为父类中也有这个方法,此处是重写这个方法的。
# while True: #这个循环不要加,加了之后意外断开会出问题。
conn = self.request
while True:
try:
data = conn.recv(1024)
except Exception:
print("对方意外中断!")
break
if not data:
break
print(str(data, "utf8"))
inp = input(">>>>:")
conn.send(bytes(inp, "utf8"))
conn.close() server1 = socketserver.ThreadingTCPServer(("127.0.0.1", 8000), MyServer) # 此处容易忘记添加上面定义的类
server1.serve_forever() 客户端-------------------------------------------------------------
import socket sk = socket.socket()
ip_port = ("127.0.0.1",8000)
sk.connect(ip_port) while True:
inp = input(">>>>>:")
if inp == "exit":
break
sk.send(bytes(inp, "utf8"))
data = sk.recv(1024)
print(str(data, "utf8"))
sk.close()

线程:

计算密集型任务、I/O密集型的任务

线程的两种创建方法:

(1)实例化Thread类,传入函数:

import threading

def foo(num):
print('this is thread %s' % num) t1 = threading.Thread(target=foo(1))
t2 = threading.Thread(target=foo(2))
t1.start() # this is thread 1
t2.start() # this is thread 2
print(t1.getName()) # Thread-1
print(t2.getName()) # Thread-2

(2)从Thread派生一个子类,创建这个子类的实例

import threading

class MyThread(threading.Thread):
def __init__(self, num):
threading.Thread.__init__(self)
self.num = num def run(self):
print("this is thread %s" % self.num) t1 = MyThread(1)
t2 = MyThread(2)
t1.start() # this is thread 1
t2.start() # this is thread 2

join():在子线程完成运行之前,这个子线程的父线程将一直被阻塞。

import threading
import time def music(func):
for i in range(2):
print("Begin listening to %s . %s" % (func, time.ctime()))
time.sleep(1)
print("end listening %s" % time.ctime()) def movie(func):
for i in range(2):
print("Begin watching %s . %s" % (func, time.ctime()))
time.sleep(5)
print("end watching %s" % time.ctime()) threads = []
t1 = threading.Thread(target=music, args=("七里香",))
threads.append(t1)
t2 = threading.Thread(target=movie, args=("阿甘正传",))
threads.append(t2) if __name__ == '__main__':
for t in threads:
t.start()
t.join() # t2进程结束后,主线程才继续执行
print("all over ..........%s" % time.ctime())

setDaemon():将线程设置为守护线程,设置为守护线程的线程,它守护着主线程,主进程结束了,它也就结束了。

import threading
import time def music(func):
for i in range(2):
print("Begin listening to %s . %s" % (func, time.ctime()))
time.sleep(1)
print("end listening %s" % time.ctime()) def movie(func):
for i in range(2):
print("Begin watching %s . %s" % (func, time.ctime()))
time.sleep(5)
print("end watching %s" % time.ctime()) threads = []
t1 = threading.Thread(target=music, args=("七里香",))
threads.append(t1)
t2 = threading.Thread(target=movie, args=("阿甘正传",))
threads.append(t2) if __name__ == '__main__':
t2.setDaemon(True) #将t2设置为守护线程,
for t in threads:
t.start()
print("all over ..........%s" % time.ctime())

Threading的其它方法:

# threading.currentThread(): 返回当前的线程变量。
# threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
# threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。
# 除了使用方法外,线程模块同样提供了Thread类来处理线程,Thread类提供了以下方法:
# run(): 用以表示线程活动的方法。
# start():启动线程活动。
# join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。
# isAlive(): 返回线程是否活动的。
# getName(): 返回线程名。
# setName(): 设置线程名。

Python:Day27 socketserver、线程的更多相关文章

  1. Python 基础之 线程与进程

    Python 基础之 线程与进程 在前面已经接触过了,socket编程的基础知识,也通过socketserver 模块实现了并发,也就是多个客户端可以给服务器端发送消息,那接下来还有个问题,如何用多线 ...

  2. Python进程、线程、协程

    进程和线程的解释 进程(process)和线程(thread)是操作系统的基本概念,计算机的核心是CPU,它承担了所有的计算任务: 单个CPU一次只能运行一个任务,代表单个CPU总是运行一个进程,其他 ...

  3. python进程、线程、协程(转载)

    python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资 ...

  4. Python进程、线程、协程详解

    进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...

  5. 理解 Python 中的线程

    原地址:http://blog.jobbole.com/52060/ 本文由 伯乐在线 - acmerfight 翻译自 Akshar Raaj.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. 我 ...

  6. python进阶-------进程线程(二)

    Python中的进程线程(二) 一.python中的"锁" 1.GIL锁(全局解释锁) 含义: Python中的线程是操作系统的原生线程,Python虚拟机使用一个全局解释器锁(G ...

  7. python利用socketserver实现并发套接字功能

    本文实现利用python的socketserver这个强大的模块实现套接字的并发 目录结构如下: 测试文件请放在server_file文件夹里面 server.py #!/usr/bin/env py ...

  8. python中的线程技术

    #!/user/bin/env python # @Time :2018/7/7 11:42 # @Author :PGIDYSQ #@File :DaemonTest.py import threa ...

  9. python之socketserver实现并发

    python之socketserver实现并发 服务端 import socketserver #socketserver模块是用来实现并发 # 我们自己的类里一定要继承socketserver.Ba ...

  10. python并发_线程

    关于进程的复习: # 管道 # 数据的共享 Manager dict list # 进程池 # cpu个数+1 # ret = map(func,iterable) # 异步 自带close和join ...

随机推荐

  1. crontab -e 怎么保存后退出?

    退出 ctrl + z

  2. 计算机1&操作系统硬件

    1.什么是编程语言? 语言是一种事物与另外一种事物沟通的表达方式   而编程则是人与计算机沟通的表达方式 2:什么是编程? 编程就是程序员用计算机能理解的的表达方式,把程序员想要表达的内容写到文件里, ...

  3. Dynamics 365 Online-Relevance Search

    区别于Quick Find,以及Full-Text Quick Find,Dynamics 365 Online有了一个特有的Search功能:Relevance Search.至于为什么是Onlin ...

  4. <自动化测试方案_6>第六章、API自动化测试

    第六章.API自动化测试 (一)工具实现 目前大众接口测试的工具有:Postman.SoupUI.jmeter他们的特点介绍有人做个宏观的研究,这里进行引用:https://blog.csdn.net ...

  5. canvas代替imgage,可以有效的提高大图片加载的速度!

    //加载zepto插件 <script> //定义图片的数量 var total = 17; //获取屏幕的宽度 var zWin = $(window); //定义渲染图片的方法 var ...

  6. getprop从哪获取属性

    Android SystemProperties设置/取得系统属性的用法总结 通过调查得知,Android系统中取得/设置系统属性的用法参考以下3篇文章就足够了. 1.Android SystemPr ...

  7. Docker的安装与使用介绍

    docker是什么? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...

  8. jdk各版本特性

    JDK Version 1.0 开发代号为Oak(橡树),于1996-01-23发行. JDK Version 1.1 于1997-02-19发行. 引入的新特性包括: 引入JDBC(Java Dat ...

  9. 孟岩:怎么看待Coin与Token的关系?

    由于中英文的隔阂,很多在英文世界里一目了然.不言自明的词汇,翻译成中文之后意义模糊.难以理解.比如在区块链和加密数字货币领域,coin 和 token 的区别,很长时间困扰着我们,并且引发争论. 后来 ...

  10. win7 中 sql server2005 卸载简介

    注:卸载前一定要做好备份,一定要清理干净,不然重装会出错(只针对完全卸载,没试过只删除一个版本的) 工具:①Windows Install Clean Up  ②SrvInstw.exe 1.停止所有 ...