多线程和socket练习
1、多线程和Queue
需求:
编写py脚本实现,生产者从content中读取内容放到Queue中,然后消费者从Queue读取内容,最后保存到newcontent
源码如下:
content:
《念奴娇 赤壁怀古》 年代: 宋 作者: 苏轼 大江东去,浪淘尽,千古风流人物。 故垒西边,人道是,三国周郎赤壁。 乱石穿空,惊涛拍岸,卷起千堆雪。 江山如画,一时多少豪杰。 遥想公瑾当年,小乔初嫁了,雄姿英发。 羽扇纶巾,谈笑间,樯橹灰飞烟灭。(樯橹 一作:强掳) 故国神游,多情应笑我,早生华发。 人生如梦,一尊还酹江月。(人生 一作:人间;尊 通:樽)江城子·乙卯正月二十日夜记梦宋代:苏轼十年生死两茫茫,不思量,自难忘。千里孤坟,无处话凄凉。纵使相逢应不识,尘满面,鬓如霜。 夜来幽梦忽还乡,小轩窗,正梳妆。相顾无言,惟有泪千行。料得年年肠断处,明月夜,短松冈。(肠断 一作:断肠)
newcontent 内容为空
threadQueue.py
#!/usr/bin/env python #coding:utf8 import sys print(sys.getdefaultencoding()) import codecs from threading import Thread import time from queue import Queue class Produce(Thread):def __init__(self,queue):super(Produce,self).__init__()self.fileName = "content"self.fileList = list()self.queue = queuedef run(self):with codecs.open(self.fileName,'r',encoding = 'utf-8') as fd:data = fd.readlines()print(data)self.fileList += datafor line in self.fileList:self.queue.put(line)class Consumer(Thread):def __init__(self,queue):self.queue = queuesuper(Consumer,self).__init__()self.newPassword = "newcontent"self.fileList = list()self.status = 1def run(self):while 1:if self.queue.empty():time.sleep(1)self.status += 1print(self.status)if self.status == 5:breakelse:self.status = 1data = self.queue.get()self.fileList.append(data)with codecs.open(self.newPassword,"w",encoding = 'utf-8') as fd:fd.writelines(self.fileList) def main():q = Queue()produce = Produce(q)consumer = Consumer(q)produce.start()consumer.start()if __name__ == "__main__":main()
运行结果:
utf-8 ['《念奴娇 赤壁怀古》\r\n', '年代: 宋 作者: 苏轼\r\n', '大江东去,浪淘尽,千古风流人物。\r\n', '故垒西边,人道是,三国周郎赤壁。\r\n', '乱石穿空,惊涛拍岸,卷起千堆雪。\r\n', '江山如画,一时多少豪杰。\r\n', '遥想公瑾当年,小乔初嫁了,雄姿英发。\r\n', '羽扇纶巾,谈笑间,樯橹灰飞烟灭。(樯橹 一作:强掳)\r\n', '故国神游,多情应笑我,早生华发。\r\n', '人生如梦,一尊还酹江月。(人生 一作:人间;尊 通:樽)\r\n', '\r\n', '江城子·乙卯正月二十日夜记梦\r\n', '\r\n', '宋代:苏轼\r\n', '\r\n', '十年生死两茫茫,不思量,自难忘。千里孤坟,无处话凄凉。纵使相逢应不识,尘满面,鬓如霜。\r\n', '夜来幽梦忽还乡,小轩窗,正梳妆。相顾无言,惟有泪千行。料得年年肠断处,明月夜,短松冈。(肠断 一作:断肠)'] 2 2 3 4 5
打开newcontent 验证:内容跟content 一致
《念奴娇 赤壁怀古》 年代: 宋 作者: 苏轼 大江东去,浪淘尽,千古风流人物。 故垒西边,人道是,三国周郎赤壁。 乱石穿空,惊涛拍岸,卷起千堆雪。 江山如画,一时多少豪杰。 遥想公瑾当年,小乔初嫁了,雄姿英发。 羽扇纶巾,谈笑间,樯橹灰飞烟灭。(樯橹 一作:强掳) 故国神游,多情应笑我,早生华发。 人生如梦,一尊还酹江月。(人生 一作:人间;尊 通:樽)江城子·乙卯正月二十日夜记梦宋代:苏轼十年生死两茫茫,不思量,自难忘。千里孤坟,无处话凄凉。纵使相逢应不识,尘满面,鬓如霜。 夜来幽梦忽还乡,小轩窗,正梳妆。相顾无言,惟有泪千行。料得年年肠断处,明月夜,短松冈。(肠断 一作:断肠)
2、Socket编程
练习内容:
服务端socklet向客户端client发送数据,client接受并打印。
socketutil.py
#!/usr/bin/env python #coding:utf8 import socket import sys from datetime import time import timeclass InitSocket(object):def __init__(self,host,port,type):self.host = hostself.port = portself.address = (host,port)self.type = typeself.s = Noneself.createsocket()def createsocket(self):if self.type.upper() == "TCP":self.s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)return self.selif self.type.upper == "UDP":self.s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)return self.selse:print("you must input the InitSocket type is 'UDP|TCP'")class SocketServer(InitSocket):def __init__(self,host,port,type,backlog):self.backlog = backlogself.clientAddress =Nonesuper(SocketServer,self).__init__(host,port,type)def run(self):self.s.bind(self.address)self.s.listen(self.backlog)print("server start....")conn,self.clientAddress = self.s.accept()print("accept connect from {0}".format(conn))for i in range(1,10):print("i = {0}".format(str(i)).encode("utf-8"))conn.sendall("i = {0}".format(str(i)).encode("utf-8"))self.s.close()class ClientSocket(InitSocket):def run(self):self.s.connect(self.address)status = 1while 1:data = self.s.recv(1024)if len(data.decode("utf-8")) > 0 :print(data)else:status +=1time.sleep(1)if status >5:break
testsocketserver.py
from sockettest.socketutil import SocketServerif __name__ == "__main__":sockServer = SocketServer(host="192.168.88.121",port=8000,type="tcp",backlog=5)sockServer.run()
testsocketclient.py
from sockettest.socketutil import ClientSocketif __name__ == '__main__':socketClient = ClientSocket(host="192.168.88.121", port=8000, type="tcp")socketClient.run()
一次运行testsocketserver.py和testsocketclient.py
testsocketserver.py
server start.... accept connect from <socket.socket fd=188, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.88.121', 8000), raddr=('192.168.88.121', 63138)> b'i = 1' b'i = 2' b'i = 3' b'i = 4' b'i = 5' b'i = 6' b'i = 7' b'i = 8' b'i = 9'
testsocketclient.py
b'i = 1'
b'i = 2i = 3i = 4i = 5i = 6i = 7i = 8i = 9'
转载于:https://www.cnblogs.com/pythonlx/p/8166189.html
多线程和socket练习相关推荐
- java游戏输赢统计_java利用多线程和Socket实现猜拳游戏
本文实例为大家分享了利用多线程和Socket实现猜拳游戏的具体代码,供大家参考,具体内容如下 实例:猜拳游戏 猜拳游戏是指小时候玩的石头.剪刀.布的游戏.客户端与服务器的"较量", ...
- 递归锁、信号量、GIL锁、基于多线程的socket通信和进程池线程池
递归锁.信号量.GIL锁.基于多线程的socket通信和进程池线程池 递归锁 死锁现象:是指两个或两个以上的进程和线程因抢夺计算机资源而产生的一种互相等待的现象 from threading impo ...
- java多线程 游戏_java利用多线程和Socket实现猜拳游戏
本文实例为大家分享了利用多线程和Socket实现猜拳游戏的具体代码,供大家参考,具体内容如下 实例:猜拳游戏 猜拳游戏是指小时候玩的石头.剪刀.布的游戏.客户端与服务器的"较量", ...
- Qt中采用多线程实现Socket编程
Qt中采用多线程实现Socket编程 Socket通常也称作"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 本文介绍的是Qt中采用多线程 ...
- 你值得拥有!-阿里P8架构师荣耀典藏:Java多线程与Socket实战微服务框架笔记
先赞再看,谢谢关注 小编分享的这份<Java多线程与Socket:实战微服务框架>,综合运用Java多线程.Socket.动态代理等技术来构建微服务框架 内容结构 本书从实战角度出发,首先 ...
- jsd 多线程与socket网络通信
多线程与socket网络通信 一.多线程 什么是多线程? 百度:"多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件 ...
- 嵌入式开发日记(9)——多线程与socket通信
尝试用多线程,socket网络编程,心跳检测机制,实时绘图,丢包检测机制,校验位检测,超时重传机制, 数据库存储等功能优化项目 多线程与socket编程: 参考链接: https://blog.cs ...
- 多线程Java Socket编程示例(转)
这篇做为学习孙卫琴<<Java网络编程精解>>的学习笔记吧.其中采用Java 5的ExecutorService来进行线程池的方式实现多线程,模拟客户端多用户向同一服务器端发送 ...
- 多线程Java Socket编程示例
采用Java 5的ExecutorService来进行线程池的方式实现多线程,模拟客户端多用户向同一服务器端发送请求. 1.服务端 package sterning; import java.io.B ...
- 多线程和Socket——在线聊天室
多线程开发和Socket技术 一.进程和线程 进程:每个应用程序对应一个进程: 线程:一个进程至少包含一个线程,线程要和CPU进行交互. 多线程并发(可以理解为):"同一时间"执行 ...
最新文章
- C学习杂记(四)sizeof计算联合体大小
- php异步方案,php 伪异步执行实现方法
- PL/SQL 训练12--动态sql和绑定变量
- java加载publickey,比较java中的PublicKey对象
- 获取元素在文档上的正确坐标
- 一道面试题:用多线程求1000以内的素数有多少个?并给出消耗时间
- 【Docker Desktop】Neo4j
- kali进行arp断网攻击
- ble协议栈从零开始七(linklayer 之 privacy)
- php imp,Imp_在线英语听力室
- 基于ichartjs在android上使用HTML5实现各种图表的类库
- (转载)书蕴——基于书评的人工智能推荐系统
- Termux网络文件管理器——filebrowser
- git初步使用(登录和创建仓库)
- ChatGPT:微软人工智能Office和电邮即将登场...
- mysql slow queries,检查 mysql sql 效能使用 MySQL Slow Queries
- 【VS开发】设备控制台 (DevCon.exe) 示例
- 2017秋-软件工程第四次作业(1)-代码规范
- bootstrap分页css样式,修改bootstrap-table中的分页样式
- 华为交换机链路聚合Eth-trunk实例