Python 多处理中的子级与父级通信

2023-11-25

我正在编写一个 python 脚本,它将通过将行发送到不同的进程来处理来快速解析文件。最后,我希望父进程接收每个子进程的结果,然后能够对其进行操作。这是代码:

#!/usr/bin/env python
import os
import re

from datetime import datetime
from multiprocessing import Process, JoinableQueue

class LineConsumer(Process):

    def __init__(self, queue):
        self.queue = queue
        self.lines = 0
        super(LineConsumer, self).__init__( )

    def run(self):
        print "My PID is %d" % self.pid

        while True:
            line = self.queue.get( )
            print self.lines
            if ':' in line:
                self.lines += 1
            self.queue.task_done( )

class Parser(object):

    def __init__(self, filename, processes=4):
        self.filename = filename
        self.processes = processes

    def parse(self):
        queue = JoinableQueue(100)
        consumers = [ ]
        parents = [ ]
        for i in range(0, self.processes):
            lc = LineConsumer(queue)
            lc.start( )
            consumers.append(lc)

        starttime = datetime.now( )
        problem = False
        numlines = 0

        with open(self.filename, 'r') as data:
            for line in data:
                numlines += 1

                def checkAlive(p):
                    if not p.is_alive( ):
                        return False
                    return True

                alive = map(checkAlive, consumers)
                if False in alive:
                    problem = True
                    print "A process died!!!"
                    break
                queue.put(line)

        if not problem:
            queue.join( )

        for p in consumers:
            print p.lines( )
            p.terminate( )
            p.join( )

        endtime = datetime.now( )
        timedelta = endtime - starttime 
        lps = numlines / timedelta.total_seconds( )
        print "Processed packets at %f lps" % lps

if __name__ == "__main__":
    import sys

    if len(sys.argv) != 2:
        print "Supply a file to read"
        sys.exit(1)

    parser = Parser(sys.argv[1])
    parser.parse( )

结果如下:

My PID is 11578
My PID is 11579
My PID is 11580
My PID is 11581
0
1
0
2
1
3
2
1
...
555
627
564
556
628
0
0
0
0
Processed packets at 27189.771341 lps

正如您所看到的,每个子级都可以保存其行数,但是当我尝试从父级访问计数时,我一直得到 0。如何将行数发送给父级?


您可以通过结果队列传回值。

在线消费者:

def __init__(self, queue, result_queue):
   self.result_queue = result_queue
   # ...

def terminate(self):
   self.results_queue.put(self.lines)
   super(LineConsumer, self).terminate()

在解析器中:

queue = JoinableQueue(100)
result_queue = Queue()
# ...
  lc = LineConsumer(queue, result_queue)
# ...
for p in consumers:
  p.terminate()
  p.join()

while True:
  try:
    print results.queue.get(False)
  except Queue.Empty: # need to import Queue
    break
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 多处理中的子级与父级通信 的相关文章

  • pip 安装最新的依赖版本

    当我使用安装包时pip install e 它仅安装不满足的依赖项并忽略依赖项升级 如何在每次运行时安装最新的依赖版本pip install e 我尝试过使用pip install upgrade e 但是使用这个选项没有任何改变 我仍然得
  • 使用 keras 澄清 Yolo v3 模型输出

    我将 yolo v3 模型与 keras 一起使用 该网络为我提供了形状如下的输出容器 1 13 13 255 1 26 26 255 1 52 52 255 所以我找到了这个link https www cyberailab com ho
  • 使用python编辑html,但是lxml将漂亮的html实体转换为奇怪的编码

    我正在尝试使用 python 带有 pyquery 和 lxml 来更改和清理一些 html Eg html div p It 146 s a spicy meatball p div lxml html clean 函数 clean ht
  • 使用 Poetry 创建的 Python 项目:如何在 Visual Studio Code 中调试它?

    我有一个根据基本 Poetry 创建的 Python 项目指示 https python poetry org docs basic usage 项目文件夹是这样的 my project my project my project py F
  • 在Python中,如何通过去掉括号和大括号来打印Json

    我想以一种很好的方式打印 Json 我想去掉方括号 引号和大括号 只使用缩进和行尾来显示 json 的结构 例如 如果我有一个像这样的 Json A A1 1 A2 2 B B1 B11 B111 1 B112 2 B12 B121 1
  • matplotlib - 将文本包装在图例中

    我目前正在尝试绘制一些pandas数据通过matplotlib seaborn 然而我的一个专栏标题特别长 拉长了情节 考虑以下示例 import random import pandas as pd import matplotlib p
  • 如何使用 Python 在表单中选择选项?

    我想知道如何以格式如下的形式选择选项 td align left td
  • Flask 和 Reactjs 抛出 JSX 转换错误

    我已经开始将 ReactJS 与 Python Flask 后端结合使用 通过 Flask 渲染模板时 我在 Chrome 控制台中收到以下客户端错误 错误 找不到模块 jstransform visitors es6 templates
  • Plotly:如何设置文本格式(下划线、粗体、斜体)

    使用注释时 我尝试在绘图中为文本添加下划线 我使用添加注释 import plotly graph objects as go g go FigureWidget make subplots rows 1 cols 1 g update l
  • python os.fork 使用相同的 python 解释器吗?

    据我所知 Python 中的线程使用相同的 Python 解释器实例 我的问题是与创建的流程相同os fork 或者每个进程创建的os fork有自己的翻译吗 每当你 fork 时 整个 Python 进程都会在内存中复制 包括Python
  • 如何在 tkinter 后台运行函数[重复]

    这个问题在这里已经有答案了 我是 GUI 编程新手 我想用 tkinter 编写一个 Python 程序 我想要它做的就是在后台运行一个可以通过 GUI 影响的简单函数 该函数从 0 计数到无穷大 直到按下按钮为止 至少这是我想要它做的 但
  • Pandas 根据条件替换数据框值

    我有一个主数据框 df Colour Item Price Blue Car 40 Red Car 30 Green Truck 50 Green Bike 30 然后我有一个价格修正数据框 df pc Colour Item Price
  • 在 Keras 中使用有状态 LSTM 训练多变量多级数回归问题

    我有时间序列P过程 每个过程的长度各不相同 但都有 5 个变量 维度 我试图预测测试过程的估计寿命 我正在用有状态的方法来解决这个问题LSTM在喀拉斯 但我不确定我的训练过程是否正确 我将每个序列分成长度的批次30 所以每个序列都是这样的形
  • numpy 向量化而不是 for 循环

    我用 Python 写了一些代码 运行良好 但速度很慢 我认为是由于 for 循环 我希望可以使用 numpy 命令加速以下操作 让我定义目标 假设我有一个 2D numpy 数组all CMs尺寸row x col 例如考虑一个6x11数
  • 我应该在哪里对对象和字段进行 django 验证?

    我正在创建一个 Django 应用程序 它使用 Django Rest Framework 和普通的 django views 作为用户的入口点 我想对模型的独立字段以及整个对象进行验证 例如 字段 根据正则表达式函数输入的车牌是否正确 与
  • 如何在 Jupyter Notebook 中选择 conda 环境

    我安装了 Anaconda 5 3 和 Python 3 7 根环境 之后我使用 Python 3 6 创建了一个新环境 py36 我激活了新环境activate py36 conda env list表明环境是活跃的 但是当我启动 Jup
  • 如何使用 Matplotlib 可视化标量二维数据?

    所以我有一个网格网格 矩阵 X 和 Y 以及标量数据 矩阵 Z 我需要将其可视化 最好是一些 2D 图像 在各点处带有颜色 显示 Z 值 我做了一些研究 但没有找到任何能完全满足我想要的效果的东西 pyplot imshow Z 看起来不错
  • 如何将另一整列作为参数传递给 pandas fillna()

    我想用另一列中的值填充一列中的缺失值 使用fillna方法 我读到循环遍历每一行将是非常糟糕的做法 最好一次完成所有事情 但我不知道如何使用fillna 之前的数据 Day Cat1 Cat2 1 cat mouse 2 dog eleph
  • 基于 Web 请求在 Airflow 上运行作业

    我想知道是否可以在通过 HTTP 收到请求时执行气流任务 我对 Airflow 的调度部分不感兴趣 我只是想用它来代替芹菜 因此 示例操作如下所示 用户提交一份表格 请求某些报告 后端接收请求并向用户发送请求已收到的通知 然后后端使用 Ai
  • Python 中的可逆 STFT 和 ISTFT

    有没有通用的形式短时傅立叶变换 https en wikipedia org wiki Short time Fourier transform与内置于 SciPy 或 NumPy 或其他什么中的相应逆变换 这是pyplotspecgram

随机推荐

  • 优化 LINQ to SQL 查询

    我有一个如下所示的查询 public IList
  • Visual Studio 单元测试 Assert.AreEqual 失败,预期值和实际值相同

    在单元测试方面 我是个新手 所以如果这是完全无知 请原谅我 但即使我为预期值和实际值提供完全相同的值 我也无法让此方法通过单元测试 当我设置断点并单步执行时 我已确认预期变量和实际变量都是包含两项的字符串数组 blah 和 blah 但每次
  • 等待 do shell 脚本完成

    我正在尝试使用 Applescript 在 Xcode 中创建一个应用程序来转换 PDF 问题是我需要 Xcode AppleScript 等待每个 do shell script 命令完成处理 然后才能开始下一个命令 有没有办法检测每个脚
  • 评估符号表达

    syms t Define symbolic var x y int t 2 Calculate integral of x it should be t 3 3 x 1 10 现在我要计算y x 它应该是 1 3 8 3 1000 3 简
  • Bootstrap 3.1.1 导航栏最大化输入在 3.2.0 中不再最大化

    问题 如何在 Bootstrap 3 2 0 导航栏中获得最大化的搜索输入 在 Bootstrap 3 1 1 中 我使用以下代码作为固定底部导航栏来显示最大化的搜索输入
  • Hashmap 会自动排序吗?

    这是我的哈希图 HashMap
  • Android:PSS(比例集大小)计算

    我试图弄清楚 Android 中 PSS 是如何计算的 我找到了一个article其内容如下 进程的 比例集大小 PSS 是页数 它在内存中 其中每个页面除以页数 共享它的进程 因此 如果一个进程有 1000 个页面 全部属于它自己 与另一
  • 如何为列中的每个单元格执行函数并循环遍历所有工作簿?

    这是我到目前为止所拥有的 Sub TrimColumnD Dim ws As Worksheet For Each ws In ThisWorkbook Worksheets Dim c As Range For Each c In Act
  • 生成器角度模块没有创建新项目

    我是自耕农工具集的新手 我在 Ubuntu 12 中运行以下命令 npm install g yo npm install g generator webapp yo webapp 我能够创建一个网络应用程序项目 之后我尝试创建一个有角度的
  • 使用 WMI ManagementObjectSearcher 缺少指令或程序集引用?

    我找到了这个链接 使用 C 检测 Windows 上的防病毒软件 然而 当我在 Visual C Express Edition 2008 中尝试此代码时 它显示 Error 1 The type or namespace name Man
  • Git hook:启用回显命令

    有没有办法在 git hook 中启用 echo var git repositories project git hooks post update bin bash unset GIT DIR echo post update hook
  • Parse.com 出现奇怪问题,未包含密钥

    我遇到了与此非常相似的问题one 基本上我使用 Parse com 加载一些具有 PFUser 指针的对象 然后我还使用 includeKey 来包含这些 PFUsers 这是代码 PFQuery query PFQuery queryWi
  • G++ 4.6 -std=gnu++0x:静态局部变量构造函数调用时序和线程安全

    void a void b struct X X b void f a static X x 假设在进入 main 之后 f 被不同的线程 可能存在竞争 多次调用 当然 对 a 和 b 的唯一调用就是上面看到的那些 当上面的代码被编译时海湾
  • 用于没有模型的对象的石墨烯解析器

    我正在尝试编写一个解析器 它返回由函数创建的对象 它从memcached获取数据 所以没有实际的model我可以把它绑起来 我认为我的主要问题是我不知道什么type使用以及如何设置它 我将其与 Django 结合使用 但我不认为这是 dja
  • 在 ggplot2 中使用 grconvertX/grconvertY

    我想弄清楚如何在 ggplot 中使用 grconvertX grconvertX 我的最终目标是向ggplot2图 也可能是lattice with grid text and grid lines从用户坐标到设备坐标 我知道可以用 gr
  • 在响应式布局中隐藏元素?

    通过引导程序查看 它们似乎支持折叠较小屏幕的菜单栏项目 页面上的其他项目是否有类似的内容 例如 我有一个带有导航药丸的浮动右侧 在小屏幕上这会导致问题 我很乐意至少将其放入类似的点击显示更多下拉列表中 这在现有的 Bootstrap 框架中
  • 改变图像标签的原型?

    我正在尝试编写一个可以执行以下操作的库 当该库包含在 head 中时 它会更改 HTMLImageElement 原型 以便用户在 HTML 中碰巧使用的或在 javascript 中动态创建的任何图像标记都将具有由我的库定义的默认 one
  • 如何在 WPF 列表框中排序?

    C 4 0 WPF 应用程序 请参阅下面的代码 在启动时显示 单击 abd 后Sort按钮与btnSort Click 单击事件处理程序 如何按 aaa bbb ccc 顺序排序 C 代码 public MainWindow Initial
  • 保存更高分辨率的图表而不弄乱外观

    你们都必须原谅我的无知 因为我最近才开始使用 C 我只是有一个关于 Windows 图表控件的问题 因为我遇到了一个相当愚蠢的问题 我有一个程序 其中有一些报告 其中包括漂亮的窗口图表来表示一些数据 但是 我一直将这些图表保存到文件中以供各
  • Python 多处理中的子级与父级通信

    我正在编写一个 python 脚本 它将通过将行发送到不同的进程来处理来快速解析文件 最后 我希望父进程接收每个子进程的结果 然后能够对其进行操作 这是代码 usr bin env python import os import re fr