Python 3:多处理,EOFError:读取行时出现 EOF

2023-12-02

我希望有一个进程持续监视 RPi 输入,并将变量(我选择了一个队列)设置为 True 或 False 以反映去抖值。然后另一个进程将捕获图像(从流中)。我写了一些代码只是为了检查我是否可以得到多重处理和信号(队列)工作正常(我是一个成熟的编码器......)。

这一切都可以在线程中正常工作,但多处理会产生奇怪的错误。具体来说是“多处理,EOFError:读取行时的EOF”。代码输出:-

this computer has the following number of CPU's 6
OK, started thread on separate processor, now we monitor variable
enter something, True is the key word:
Process Process-1:
Traceback (most recent call last):
  File "c:\Python34\lib\multiprocessing\process.py", line 254, in _bootstrap
    self.run()
  File "c:\Python34\lib\multiprocessing\process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\Peter\Documents\NetBeansProjects\test_area\src\test4.py", line 16, in Wait4InputIsTrue
    ValueIs = input("enter something, True is the key word: ")
EOFError: EOF when reading a line

该模块监视“端口”(我使用键盘作为输入):

#test4.py
from time import sleep
from multiprocessing import Lock

def Wait4InputIsTrue(TheVar, TheLock):
    while True:
        sleep(0.2)
        TheLock.acquire()
        #try:
        ValueIs = input("enter something, True is the key word: ")
        #except:
        #    ValueIs = False
        if ValueIs == "True":
            TheVar.put(True)
            print("changed TheVar to True")
        TheLock.release()

该模块监视状态并对其进行操作:

#test5.py
if __name__ == "__main__":
    from multiprocessing import Process, Queue, Lock, cpu_count
    from time import sleep
    from test4 import Wait4InputIsTrue

    print("this computer has the following number of CPU's", cpu_count())
    LockIt = Lock()
    IsItTrue = Queue(maxsize = 3)

    Wait4 = Process(target = Wait4InputIsTrue, args = (IsItTrue, LockIt))
    Wait4.start()

    print("OK, started thread on separate processor, now we monitor variable")

    while True:
        if IsItTrue.qsize():
            sleep(0.1)
            print("received input from separate thread:", IsItTrue.get())

请注意,我尝试在 test4.py 中的输入语句中添加 try: ,在这种情况下,它会无限期地不断打印“输入某些内容,True 是关键字:”,而不带 cr。

我疯狂地尝试修复它,添加了 Lock,没有什么区别

任何人都知道为什么会发生这种情况?


您的问题可以归结为一个更简单的脚本:

import multiprocessing as mp
import sys

def worker():
    print("Got", repr(sys.stdin.read(1)))

if __name__ == "__main__":
    process = mp.Process(target=worker)
    process.start()
    process.join()

运行时,它会产生

$ python3 i.py
Got ''

读取零字节意味着管道已关闭并且input(..)把它变成一个EOFError例外。

The multiprocessing模块不允许您阅读stdin。这通常是有道理的,因为混合stdin多个孩子的读者是一件有风险的事情。事实上,深入研究实施,multiprocessing/process.py显式设置stdin to devnull:

                sys.stdin.close()
                sys.stdin = open(os.devnull)

如果你只是使用stdin对于测试,那么解决方案很简单:不要这样做!如果你确实需要用户输入,那么生活就会变得更加困难。您可以使用额外的队列以及父级中的代码来提示用户并获取输入。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 3:多处理,EOFError:读取行时出现 EOF 的相关文章

  • 使用 InlineKeyboardButton python telegram bot 发送命令

    在Python电报机器人中 是否有可能InlineKeyboardButton发送类似命令 cancel当它被按下时 例如 当用户按下取消按钮时 他们将自动发送 cancel 命令 然后由机器人处理 从这里的例子来看 https githu
  • AttributeError:'function'对象在pandas中没有属性'bar'

    我有一个 pandas 数据框 它是 pandas 数据框类型 如下所示 type df Out 176 pandas core frame DataFrame 但是 当我尝试在此数据框上使用任何绘图函数 如条形图 时 会出现如下错误 df
  • 如何在 QTableView 标题中单击鼠标右键单击上下文菜单?

    下面的示例代码 很大程度上受到here http www saltycrane com blog 2007 12 pyqt 43 qtableview qabstracttablemodel 有一个右键单击上下文菜单 当用户单击表中的单元格
  • Python Numpy Reshape错误[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试重塑 3D numpy 数组时遇到一个奇怪的错误 数组 x 的形状为 6 10 300 我想将其重塑为 6 3000 我正
  • minAreaRect OpenCV 返回的裁剪矩形 [Python]

    minAreaRectOpenCV 中返回一个旋转的矩形 如何裁剪矩形内图像的这部分 boxPoints返回旋转矩形的角点的坐标 以便可以通过循环框内的点来访问像素 但是在 Python 中是否有更快的裁剪方法 EDIT See code在
  • 如何使用 python、openCV 计算图像中的行数

    我想数纸张 所以我正在考虑使用线条检测 我尝试过一些方法 例如Canny HoughLines and FLD 但我只得到处理过的照片 我不知道如何计算 有一些小线段就是我们想要的线 我用过len lines or len contours
  • 烧瓶 - 404 未找到

    我是烧瓶开发的新手 这是我在烧瓶中的第一个程序 但它向我显示了这个错误 在服务器上找不到请求的 URL 如果您输入了网址 请手动检查拼写并重试 这是我的代码 from flask import Flask app Flask name ap
  • 无法在我的程序中使用 matplotlib 函数

    我正在 Windows 10 中运行 Anaconda 安装 conda 版本 4 3 8 这是我尝试在 python 命令行中运行的代码 import matplotlib pyplot as plt x 1 2 3 4 y 5 6 7
  • Django Web 应用程序中的 SMTP 问题

    我被要求向使用 Django Python 框架实现的现有程序添加一个功能 此功能将允许用户单击一个按钮 该按钮将显示一个小对话框 表单以输入值 我确实编写了一些代码 显示电子邮件已发送的消息 但实际上 它没有发送 My code from
  • 将 Python Selenium 输出写入 Excel

    我编写了一个脚本来从在线网站上抓取产品信息 目标是将这些信息写入 Excel 文件 由于我的Python知识有限 我只知道如何在Powershell中使用Out file导出 但结果是每个产品的信息都打印在不同的行上 我希望每种产品都有一条
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 有没有办法拉伸整个显示图像以适应给定的分辨率?

    我最近一直在使用pygame制作游戏 遇到了一个小问题 基本上 我希望能够将屏幕上的整个图像 我已经传输到它的所有内容 拉伸到用户将窗口大小调整到的分辨率 我在 pygame 和堆栈溢出的文档中搜索了很多 但我似乎找不到答案 这可能吗 我的
  • 重定向 python 交互式帮助()

    我正在为使用 Qt 的应用程序开发交互式 python shell 但是我似乎无法获得重定向的交互式帮助 我的 python 代码中有这个 class OutputCatcher def init self self data def wr
  • 使用 Sphinx 时,如何记录没有文档字符串的成员?

    我正在为我发布的包编写文档 我发现您的文档越全面 人们就越容易找到您的包来使用 废话 实际上 我在充满爱心地编写代码的所有功能和细节方面获得了很多乐趣 然而 我对如何为类级变量编写与 Sphinx 兼容的文档感到完全困惑 特别是 我有一些e
  • 通过新数据更新绘图,而不是在 Jupyter 笔记本中制作新绘图

    我有一些问题 希望你能帮我解决 我需要使用下拉小部件创建交互式绘图 我可以在其中选择并绘制感兴趣的数据 我通过以下方式做到这一点 import plotly graph objects as go import ipywidgets as
  • 在不同的 GPU 上同时训练多个 keras/tensorflow 模型

    我想在 Jupyter Notebook 中同时在多个 GPU 上训练多个模型 我正在使用 4GPU 的节点上工作 我想将一个 GPU 分配给一个模型并同时训练 4 个不同的模型 现在 我通过 例如 为一台笔记本选择 GPU import
  • 避免“散点/点/蜂群”图中的数据点重叠

    使用绘制点图时matplotlib 我想偏移重叠的数据点以使它们全部可见 例如 如果我有 CategoryA 0 0 3 0 5 CategoryB 5 10 5 5 10 我想要每一个CategoryA 0 数据点并排设置 而不是彼此重叠
  • 当训练和测试的特征数量不同时,如何处理生产环境中的One-Hot Encoding?

    在做某些实验时 我们通常在 70 上进行训练 在 33 上进行测试 但是 当您的模型投入生产时会发生什么 可能会发生以下情况 训练集 Ser Type Of Car 1 Hatchback 2 Sedan 3 Coupe 4 SUV 经过
  • 防止 Ada DLL 中的名称损坏

    有没有一种简单的方法可以防止在创建 Ada DLL 时 Ada 名称被破坏 这是我的 adb 代码 with Ada Text IO package body testDLL is procedure Print Call is begin
  • 用 Beautiful Soup 进行抓取:为什么 get_text 方法不返回该元素的文本?

    最近我一直在用 python 开发一个项目 其中涉及抓取一些网站的一些代理 我遇到的问题是 当我尝试抓取某个知名代理站点时 当我要求 Beautiful Soup 查找 IP 在代理表中的位置时 它并没有按照我的预期执行操作 我将尝试查找每

随机推荐

  • 使用elasticsearch_dsl获取所有行

    目前我正在使用以下程序从弹性搜索中提取 id 及其严重性信息 from elasticsearch import Elasticsearch from elasticsearch dsl import Search Q client Ela
  • Gulps gulp.watch 未针对新文件或已删除文件触发?

    在 glob 匹配中编辑文件时 以下 Gulpjs 任务运行良好 watch task gulp task watch build function gulp watch src js js scripts gulp watch src i
  • mvc 操作方法中泛型类型参数的 dot net core 自定义模型绑定

    我正在构建一个简单的搜索 排序 页面功能 我附上了下面的代码 以下是用例 我的目标是通过每个请求传递 当前过滤器 以保留它们 特别是在排序和分页时 我不想用许多 如果不是太多 参数污染我的操作方法 而是考虑使用保存当前过滤器的通用类型参数
  • Mac OS X Leopard 上的 Emacs 按键绑定

    I m a Mac user and I ve decided to learn Emacs I ve read that to reduce hand strain and improve accuracy the CTRL and CA
  • 抑制 MySQL 警告?

    可以说 我执行了一个触发一些警告消息的查询 eg DROP TABLE IF EXISTS abcd 有没有办法只抑制正在触发的警告消息 我看到有一个系统变量 最大错误计数 将其更改为零可能会忽略警告 但它也会执行所有错误 注释消息 也许是
  • 正则表达式用于在括号之前获取单词

    我有各种包含不同信息的字符串 但它们都有一个共同的特征 它们包含请求者的用户名 后面带有括号 就像是 paul 55 我正在尝试编写一个正则表达式 能够提取紧邻之前的单词 dd 这是我到目前为止所拥有的 P
  • 在 Windows 上为 PostgreSQL 12 安装 PL/Python

    我一直在为一个项目开发 FHIR 我们使用 PostgreSQL 作为数据库 在阅读文档时 我开始了解 PL Python 并决定尝试一下 但我无法安装 python 扩展 当我运行命令时CREATE EXTENSION pypthon3u
  • IIS 子应用程序的不同默认文档

    我有一个运行 ASP NET 站点的 IIS 网站 但它下面运行多个应用程序 基本上是一个具有单独应用程序池的虚拟目录 嗯 我需要两个单独的应用程序 它们指向同一个根文件夹目录 但我希望这些应用程序具有单独的默认文档 原因是因为这就是它在生
  • 确定 SPQuery 返回的项目总数

    我正在针对 SharePoint 2010 中的大型列表运行大量 CAML 查询 并在网格视图中向最终用户显示结果 我希望对查询返回的结果进行分页以提高性能 但是 我需要在分页控件上显示查询返回的项目的总数 我的问题是 如何确定每个查询将返
  • 使用 adb shell 连接 WiFi

    我拥有连接到特定接入点的所有详细信息 我必须仅使用该接入点 因此我所需要的只是执行此操作的命令 聚会迟到了 但我想出了一种在设备上完成此任务的方法无根 它可能不漂亮 但它有效 基本上我的建议是创建一个基于以下内容加入接入点的应用程序EXTR
  • 检查整数是否有重复数字。没有字符串方法或数组

    我想看看 int 是否有相同数字的倍数 尝试在没有字符串方法或数组的情况下做到这一点 我遇到问题的主要方法是hasDistinctDigits 当重复数字位于末尾时它起作用 但当它们出现在开头或中间时则不起作用 public static
  • Python ftplib WinError 10060

    我正在学习使用 ftplib 从此链接从 ftp 服务器检索文件 https docs python org 2 library ftplib html 当我运行这段代码时 from ftplib import FTP ftp FTP ft
  • Flex 组件就像一个多选手风琴?

    我正在寻找像单代树视图这样的组件 它可以折叠一个部分或展开任何或所有部分 但它看起来像一个手风琴 标题和画布 页面 显然 每个页面不会占据容器的整个高度 它们的高度是固定的 也许我没有使用正确的术语 因此使用了错误的搜索术语 欢迎所有建议
  • 有人有可以将推文上传到 Twitter 的 Delphi 7 代码、类或单元吗?

    是否有人成功创建了一个单元或 Delphi 7 类来将推文上传到 TWitter 网站 我希望能够从我的 Delphi 程序中添加推文 Delphi 代码的 Twitter 类 RadTweet用 Delphi 编写的 Twitter 客户
  • 逐字读取文件[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我有一个自定义存档 结构如下 list name1 name2 name3 list d
  • Google Cloud:使用 Bigquery 或其他服务进行矩阵乘法?

    我正在使用 Google Analytics 并使用 Bigquery 处理数据 我需要做一个矩阵乘法 在 Google Cloud 中实现矩阵乘法最可行的方法是什么 可以直接在Bigquery中完成吗 假设 MatrixA 是一个包含以下
  • Mongoose:查找、修改、保存

    我有一只猫鼬User model var User mongoose model Users mongoose Schema username string password string rights string 我想找到一个实例Use
  • 打印按钮打印附加图像

    我想在我的网页中添加一个打印按钮 单击打印图标后 它应该自动开始打印附加图像 我怎样才能做到这一点 使用打开新窗口window open 写给它img tag 加载图像后 使用打印文档window print 使用关闭窗口window cl
  • Swift 3:如何将 UICollectionView 中最后一行单元格水平居中,只有一个部分?

    我正在使用一个UICollectionView只有一节 这是一些可视化 x x x x x x x x 如果最后一行UICollectionView没有填充所有 3 个单元格 我想将这些单元格居中 如下所示 x x x x x x x x
  • Python 3:多处理,EOFError:读取行时出现 EOF

    我希望有一个进程持续监视 RPi 输入 并将变量 我选择了一个队列 设置为 True 或 False 以反映去抖值 然后另一个进程将捕获图像 从流中 我写了一些代码只是为了检查我是否可以得到多重处理和信号 队列 工作正常 我是一个成熟的编码