python执行命令不阻塞_Python 命令行非阻塞输入
很久很久以前,系windows平台下,用C语言写过一款贪食蛇游戏,cmd界面,用kbhit()函数实现非阻塞输入。系windows平台下用python依然可以调用msvcrt.khbit实现非阻塞监听。但系喺linux下面就冇呢支歌仔唱。
随手google咗一下,基本上都用select实现非阻塞监听,但问题是,监听的是用select之后是不能像getchar()那样,即时收到单个字符的输入,必须要等待回车。
经过努力不怠咁google... [好吧,还是google。没有google什么也做不了。]
最后系一大堆英文资料入面,拼凑出如下可用的代码,实现了单个字符非阻塞输入。
show code below.
#!/usr/bin/python
# -*- coding: utf-8 -*-
""" python non blocking input
"""
__author__ = 'Zagfai'
__version__= '2013-09-13'
import sys
import select
from time import sleep
import termios
import tty
old_settings = termios.tcgetattr(sys.stdin)
tty.setcbreak(sys.stdin.fileno())
while True:
sleep(.001)
if select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], []):
c = sys.stdin.read(1)
if c == '\x1b': break
sys.stdout.write(c)
sys.stdout.flush()
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)
print raw_input('123:')
其中用到两个模块,分别系termios、tty,用来控制tty的输入模式,由行输入变为单字符。
END.
python执行命令不阻塞_Python 命令行非阻塞输入相关推荐
- python socket server accpet 时间_Python socket.accept非阻塞?
你可能想要像select.select()(见 documentation).您提供select()和三个套接字列表:要监视的可用性,可写性和错误状态的套接字.当新客户端等待时,服务器套接字将可读. ...
- 阻塞式IO和非阻塞式IO
什么是阻塞式IO,什么是非阻塞式IO?区分他们有何用? 阻塞式IO:IO即input/output,阻塞式IO指的是"一旦输入/输出工作没有完成,则程序阻塞,直到输入/输出工作完成" ...
- 非阻塞 php,PHP异步非阻塞之路
需求 一个简单的需求,提交大量数据到远程服务器,此时并不需要等待返回. 另一个需求,获取API数据,同时查询数据库,并行处理,加快响应速度. 配置问题 set_time_limit ignore_us ...
- 深入理解非阻塞同步IO和非阻塞异步IO
这两篇文章分析了Linux下的5种IO模型 http://blog.csdn.net/historyasamirror/article/details/5778378 http://blog.csdn ...
- 同步I/O、异步I/O、阻塞I/0、非阻塞I/O、五种I/O模型、高性能网络模型
10.I/O相关概念 https://www.cnblogs.com/xiaoxi/p/6525396.html 10.1.同步和异步 同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须 ...
- java 多线程阻塞队列 与 阻塞方法与和非阻塞方法
Queue是什么 队列,是一种数据结构.除了优先级队列和LIFO队列外,队列都是以FIFO(先进先出)的方式对各个元素进行排序的.无论使用哪种排序方式,队列的头都是调用remove()或poll()移 ...
- cmd打开python显示不是内部_Python命令行窗口提示“不是内部或外部命令……”的解决方法...
前提:已在[控制面板\系统和安全\系统\高级系统设置\高级\环境变量]里修改变量Path,编辑系统变量后面添加了[;D:\Python27],可以在命令行模式下正常进入Python交互式环境,并能直接 ...
- Python 命令行非阻塞输入
很久很久以前,系windows平台下,用C语言写过一款贪食蛇游戏,cmd界面,用kbhit()函数实现非阻塞输入.系windows平台下用python依然可以调用msvcrt.khbit实现非阻塞监听 ...
- python执行linux和window的命令
linux: python执行shell脚本常用的方法 import os val=os.system("shell语句") >>> val=os.system ...
- python 拆分excel工作表_Python几行代码轻松拆分表格
Python几行代码轻松拆分表格 作者:梅朵 微信公众号:实用办公编程技能 微信号:Excel-Python 什么?,Python几行代码竟然可以按指定轻松拆分表格? 将test.xls中的数据按地区 ...
最新文章
- INSTALL_FAILED_VERSION_DOWNGRADE
- 人脸识别门禁在安防行业的发展前景
- 在预加载新闻时,怎么去掉初始化内容的显示尴尬?
- 基于ssm的水果商城系统项目总结
- python环境配置与pytorch下载
- Android之 如何解决ScrollView 和ListView滑动冲突的问题如何解决ScrollView can host only one direct child
- Java数据库篇2——数据库基本操作
- 三言五载道不尽【追梦五年】
- 20191011:冒泡排序的改良版--Shaker排序
- 比较两个对象是否一样的代码
- Android Studio系列教程四--Gradle基础
- SpringCloud学习笔记(15)----Spring Cloud Netflix之Hystrix Dashboard的使用
- 论文阅读笔记 | 分类网络——ParNet
- 计算机网络体系结构-虚拟专用网
- hdu 4215 Number Theory?(打表)
- webstorm提示TypeError: this.cliEngine is not a constructor
- 发布网站 IIS部署网站
- 哲学家就餐问题实验报告
- Java程序员跳槽的经验开怀之谈(现在很多大厂都在裁员,你懂的)
- [catsVSdogs]猫狗大战代码注释讲解_1
热门文章
- 20200123每日一句
- Don't be afraid. You are stronger than you think.
- 181015扇贝有道词霸每日一句
- 文献格式 ShareLaTeX and Overleaf
- 扇贝有道180915每日一句
- Atitit 查看目录与分区空间占用原理 查看目录空间就是查看所在分区空间的占用 [root@lenovo ~]# df -h /elk 文件系统 容量 已用 可用
- Atitit 互操作之道 接口之道 attilax著
- Atitit常见需求分析方法与工具链 attilax大总结
- paip.从HTML select 获取数据
- 十年期货股票行情数据轻松处理——TDengine在同心源基金的应用