一 概念

众所周知,python中的获取键盘输入,input函数是没办法用在子程序的,这就限制了它的用途。想要在子程序中获取键盘输入。唯有

fn=sys.stdin.fileno函数了。

二 实例解析

  在主进程中敲写代码fn=sys.stdin.fileno(),然后将获取到的文件描述符fn传入子进程,子进程敲写代码sys.stdin = os.fdopen(fn),

然后就可以正常使用sys.stdin.readline()获取键盘输入了。

下面给出一个例子:

import os
import sys
from multiprocessing import Process def test_input(fn):
sys.stdin = os.fdopen(fn)
while True:
#info = sys.stdin.readline()
info = int(sys.stdin.readline().strip('\n'))
print("start print info!")
print(info) if info == 12:
print("equel is 1") if __name__ == "__main__":
print("start progress!")
fn = sys.stdin.fileno()
Process(target=test_input, args=(fn, )).start()

结果:

start progress!
12
start print info!
12
equel is 1
^Z

三 总结

这里注意输入的值,想要转成int,还需要一个强制转换函数。

基于Python的子进程获取键盘输入的更多相关文章

  1. java利用Scanner获取键盘输入

    首发地址:我的网易博客 在运行一个java程序的时候,可能我们需要在运行的时候传递一些参数进去...咋办呢... java提供了一个Scanner类,利用这个类,我们可以很方便的获取键盘输入的参数.. ...

  2. JavaSE---用户交互---获取键盘输入

    1.概述 1.1 JDK1.5提供了Scanner类,用来获取键盘输入: 1.2 Scanner类是   一个基于正则表达式的文本扫描器,可以从文件.输入流.字符串中解析出基本类型值.字符串值: 1. ...

  3. 获取键盘输入或者USB扫描枪数据

    /// <summary> /// 获取键盘输入或者USB扫描枪数据 可以是没有焦点 应为使用的是全局钩子 /// USB扫描枪 是模拟键盘按下 /// 这里主要处理扫描枪的值,手动输入的 ...

  4. java 获取键盘输入常用的两种方法

    java 获取键盘输入常用的两种方法 方法1: 通过 Scanner Scanner input = new Scanner(System.in); String s = input.nextLine ...

  5. tkinter获取键盘输入

    tkinter获取键盘输入

  6. Java编程中获取键盘输入实现方法及注意事项

    Java编程中获取键盘输入实现方法及注意事项 1. 键盘输入一个数组 package com.wen201807.sort; import java.util.Scanner; public clas ...

  7. 在Delphi中使用键盘勾子获取键盘输入(译--5月7日)

    http://blog.sina.com.cn/s/blog_502b2e970100949s.html 获取键盘输入以控制无法接受输入焦点的控件考虑一些游戏,显示图片在TPainBox,但是TPai ...

  8. Java基础 - 获取键盘输入

    package com.demo3; import java.util.Scanner; /* * 使用 Scanner 获取键盘输入供程序使用 * * 使用步骤: * A:导包 * import j ...

  9. System.in 获取键盘输入

    此处说明 两种使用System.in获取键盘输入的两种方法,分别是Scanner 和 InputStreamReader. 其中System.in 在System类中的定义如下: package co ...

  10. WinForm 无焦点获取键盘输入

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

随机推荐

  1. Visual Studio部署C++矩阵库Armadillo的方法

      本文介绍在Visual Studio软件中配置C++环境下线性代数运算库Armadillo的方法.   首先,我们需要在Armadillo库官网下载其源代码,直接点击下图所示红色框内部分即可.   ...

  2. ARKit的理解与使用

    AR概述 AR的意义:让虚拟世界套与现实世界建立联系,并可以进行互动. AR的技术实现:通过实时地计算摄影机输出影像的位置及角度,并在内部通过算法识别将场景中的事物,然后在内部模拟的三维坐标系中给识别 ...

  3. 设计模式 - 创建型模式 - 单例模式(C++)

    1.前言 单例模式属于创建型模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方 ...

  4. 小知识:OGG的TRANLOGOPTIONS MINEFROMACTIVEDG参数

    最近客户有一个需求,OGG源端需要配置在ADG环境,按历史配置规范,开启抽取进程报错: 2020-08-26 18:02:27 ERROR OGG-00060 Extract requires a v ...

  5. NVME(学习杂谈)—Asynchronous Event

    Asynchronous Event Request Host Software Recommendations 当一个异步事件请求完成(提供Event Type,Event Information, ...

  6. 【分布式】load balance 01-负载均衡基础知识

    负载均衡系列专题 01-负载均衡基础知识 02-一致性 hash 原理 03-一致性哈希算法 java 实现 04-负载均衡算法 java 实现 负载均衡 负载均衡是高可用网络基础架构的关键组件,通常 ...

  7. ftp 出现Passive mode refused 解决办法

    在shell中调用FTP出现下面错误时, Permission denied. Passive mode refused. Permission denied. Passive mode refuse ...

  8. RMAN REPORT NEED BACKUP DAYS 5

    47.You issue the following command on the RMAN prompt. REPORT NEED BACKUP DAYS 5; Which statement is ...

  9. Innodb存储引擎之锁

    目录 一.概述 二.lock 与 latch 三.Innodb存储引擎中的锁 锁 一致性非锁定读 一致性锁定读 自增长与锁 外键与锁 四.锁的算法 锁的算法 Phantom Problem 幻读问题 ...

  10. 网络上收集的C++常见面试题

    1. 进程与线程的关系,图解 进程简单理解就是我们平常使用的程序,进程拥有自己独立的内存空间地址,拥有一个以上的线程. 线程可以理解为轻量级的进程,是程序执行的最小单元.在某个进程启动后,会默认产生一 ...