Python游戏开发入门

http://edu.csdn.net/course/detail/5690

在这个程序里,与前面使用asyncio.Protocol协议不一样,使用底层的StreamReader、StreamWriter来创建。

首先导入asyncio和logging库,接着导入sys库。
定义服务器的IP地址和端口,以便服务器创建监听的端口。
开始定义echo(reader, writer)协程函数,这个函数是当客户端有socket连接过来就会调用这个函数响应,每一个连接过来,就创建一个协程对应工作,所以每个连接是隔离的。
接着配置logging.basicConfig的日志输出。
使用asyncio.get_event_loop()来创建协程的事件循环,使用event_loop.run_forever()进入服务器无限循环。
start_server()创建了一个任务factory返回,接着使用run_until_complete函数运行任务。

这里run_until_complete(server.wait_closed())等所有任务关闭。

源码如下:

import asyncio
import logging
import sysSERVER_ADDRESS = ('localhost', 10000)async def echo(reader, writer):address = writer.get_extra_info('peername')log = logging.getLogger('echo_{}_{}'.format(*address))log.debug('connection accepted')while True:data = await reader.read(128)if data:log.debug('received {!r}'.format(data))writer.write(data)await writer.drain()log.debug('sent {!r}'.format(data))else:log.debug('closing')writer.close()returnlogging.basicConfig(level=logging.DEBUG,format='%(name)s: %(message)s',stream=sys.stderr,
)
log = logging.getLogger('main')event_loop = asyncio.get_event_loop()
# event_loop.set_debug(True)# Create the server and let the loop finish the coroutine before
# starting the real event loop.
factory = asyncio.start_server(echo, *SERVER_ADDRESS)
server = event_loop.run_until_complete(factory)
log.debug('starting up on {} port {}'.format(*SERVER_ADDRESS))# Enter the event loop permanently to handle all connections.
try:event_loop.run_forever()
except KeyboardInterrupt:pass
finally:log.debug('closing server')server.close()event_loop.run_until_complete(server.wait_closed())log.debug('closing event loop')event_loop.close()

输出如下:

asyncio: Using selector: SelectSelector
main: starting up on localhost port 10000
echo_::1_51532: connection accepted
echo_::1_51532: received b'This is the message. It will be sent in parts.'
echo_::1_51532: sent b'This is the message. It will be sent in parts.'
echo_::1_51532: closing

Python游戏开发入门

http://edu.csdn.net/course/detail/5690

你也能动手修改C编译器

http://edu.csdn.net/course/detail/5582

纸牌游戏开发

http://edu.csdn.net/course/detail/5538

五子棋游戏开发

http://edu.csdn.net/course/detail/5487
RPG游戏从入门到精通
http://edu.csdn.net/course/detail/5246
WiX安装工具的使用
http://edu.csdn.net/course/detail/5207
俄罗斯方块游戏开发
http://edu.csdn.net/course/detail/5110
boost库入门基础
http://edu.csdn.net/course/detail/5029
Arduino入门基础
http://edu.csdn.net/course/detail/4931
Unity5.x游戏基础入门
http://edu.csdn.net/course/detail/4810
TensorFlow API攻略
http://edu.csdn.net/course/detail/4495
TensorFlow入门基本教程
http://edu.csdn.net/course/detail/4369
C++标准模板库从入门到精通 
http://edu.csdn.net/course/detail/3324
跟老菜鸟学C++
http://edu.csdn.net/course/detail/2901
跟老菜鸟学python
http://edu.csdn.net/course/detail/2592
在VC2015里学会使用tinyxml库
http://edu.csdn.net/course/detail/2590
在Windows下SVN的版本管理与实战 
http://edu.csdn.net/course/detail/2579
Visual Studio 2015开发C++程序的基本使用 
http://edu.csdn.net/course/detail/2570
在VC2015里使用protobuf协议
http://edu.csdn.net/course/detail/2582
在VC2015里学会使用MySQL数据库
http://edu.csdn.net/course/detail/2672

python里使用协程和StreamReader、StreamWriter来创建echo服务端相关推荐

  1. python中的协程(二)

    协程 1.协程: 单线程实现并发 在应用程序里控制多个任务的切换+保存状态 优点: 应用程序级别速度要远远高于操作系统的切换 缺点: 多个任务一旦有一个阻塞没有切,整个线程都阻塞在原地,该线程内的其他 ...

  2. python并发之协程_python并发编程之协程

    一 引子 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态 cpu正在运行一个任务,会在两种情况下切走去 ...

  3. Python与Golang协程异同

    背景知识 这里先给出一些常用的知识点简要说明,以便理解后面的文章内容. 进程的定义: 进程,是计算机中已运行程序的实体.程序本身只是指令.数据及其组织形式的描述,进程才是程序的真正运行实例. 线程的定 ...

  4. Python中的协程

    Python中的协程 文章目录 Python中的协程 一.什么是协程 1.概念 2.协程的好处 3.缺点 二.了解协程的过程 1.yield工作原理 2.协程在运行过程中有四个状态: 3.预激协程的装 ...

  5. Python并发之协程gevent基础(5)

    1,gevent介绍 gevent是第三方库,通过 greenlet 实现 coroutine,创建.调度的开销比 线程(thread) 还小,因此程序内部的 执行流 效率高. gevent 实现了 ...

  6. Python 中 异步协程 的 使用方法介绍

    静觅 崔庆才的个人博客:Python中异步协程的使用方法介绍:https://cuiqingcai.com/6160.html Python 异步 IO .协程.asyncio.async/await ...

  7. Python并发之协程gevent基础

    基本示例 from gevent import monkey monkey.patch_all() # 记住一定放在第一行,这里是打补丁的意思,time模块在使用协程gevent模块的时候,必须打补丁 ...

  8. Python 异步,协程,学起来好头疼,Python爬虫程序能调用GPU去爬东西吗?

    78 技术人社群日报时间 文章目录 Python 爬虫程序能调用 GPU 去爬东西吗? Python 异步,协程--,学起来好头疼 有没有牛子大的说下 `matplotlib` 里 `plot` 和 ...

  9. python 多线程和协程结合_一文讲透 “进程、线程、协程”

    本文从操作系统原理出发结合代码实践讲解了以下内容: 什么是进程,线程和协程? 它们之间的关系是什么? 为什么说Python中的多线程是伪多线程? 不同的应用场景该如何选择技术方案? ... 什么是进程 ...

最新文章

  1. 《预训练周刊》第20期:EVA:包含28亿参数的中文预训练对话模型、基于知识融入提示词的文本分类...
  2. 字符串操作、文件操作,英文词频统计预处理
  3. 在Fragment中实现百度地图,定位到当前位置(基于SDKv2.1.0)
  4. 方向控制中的动态比例值-P
  5. DNN数据库核心表结构及设计思路探研
  6. 我奋斗了十四年,却依然不能和你坐在一起相亲
  7. Web UI⾃动化测试平台,专治Web 的各种疑难杂症。
  8. 《神经网络:回到未来》(Neural Nets Back to the Future)-ICML 2016
  9. 【机器学习——决策树】——两种方法实现,含模型的保存和调用
  10. 数据库笔记08:实现索引
  11. 【Linux内核之旅】eBPF C语言入门架构
  12. 三步完成博客打赏功能
  13. Node.js区块链开发pdf
  14. Java爬虫 手机号段 归属地 处理后输出sql文件
  15. python 实现两个excel表格数据的对比--代码
  16. 中国游戏2022趋势报告:6大潜力领域4大发展趋势 多家企业分析
  17. 教务系统选课(抢课)技巧
  18. 安卓apk360加固
  19. UiPath中文教程PDF
  20. 力扣周赛 第282场 Java题解

热门文章

  1. 餐饮巨头被攻击的“致命”48小时
  2. 北航计算机学院直博多少年,北航硕博连读需要几年
  3. 数字SOC设计之低功耗设计入门(二)——功耗的分析
  4. 【分享】免梯子的GPT,玩 ChatGPT 的正确姿势
  5. C语言练习题的错题集
  6. Python-OpenCV棋盘检测
  7. idea编译报错:Refer to the generated Javadoc files in ‘..\target\apidocs‘ dir. 解决
  8. LE Audio问世!蓝牙5.2加持的TWS耳机打破AirPods专利垄断现状
  9. 素雅的登录界面,简单而优雅
  10. c++调用动态库失败解决办法