Python多重处理使用队列写入同一文件

2024-05-04

我知道 Stack Exchange 上有很多与将多处理结果写入单个文件相关的帖子,并且我在阅读了这些帖子后就开发了我的代码。我想要实现的是并行运行“RevMapCoord”函数并使用 multiprocess.queue 将其结果写入一个文件中。但我在排队工作时遇到了问题。我的代码:

def RevMapCoord(list):
    "Read a file, Find String and Do something"

def feed(queue, parlist):
    for par in parlist:
        print ('Echo from Feeder: %s' % (par))
        queue.put(par)
    print ('**Feeder finished queing**')

def calc(queueIn, queueOut):
     print ('Worker function started')
     while True:
         try:
             par = queueIn.get(block = False)
             res = RevMapCoord(final_res)
             queueOut.put((par,res))
         except:
             break

def write(queue, fname):
    fhandle = open(fname, "w")
    while True:
         try:
            par, res = queue.get(block = False)
            print >>fhandle, par, res
         except:
            break
    fhandle.close()


feedProc = Process(target = feed , args = (workerQueue, final_res))
calcProc = [Process(target = calc , args = (workerQueue, writerQueue)) for i in range(nproc)]
writProc = Process(target = write, args = (writerQueue, sco_inp_extend_geno))

feedProc.start()
print ('Feeder is joining')
feedProc.join ()
for p in calcProc:
    p.start()
for p in calcProc:
    p.join()
writProc.start()
writProc.join ()

当我运行此代码脚本时,卡在“videoProc.start()”步骤。屏幕的最后几行输出显示了“feed Proc.start()”末尾的打印语句:

Echo from Feeder: >AK779,AT61680,50948-50968,50959,6,0.406808,Ashley,Dayne
Echo from Feeder: >AK832,AT30210,1091-1111,1102,7,0.178616,John,Caine
**Feeder finished queing**

但在执行下一行“feedProc.join ()”之前挂起。代码没有给出错误并继续运行但不执行任何操作(挂起)。请告诉我我犯了什么错误。


我认为你应该将你的例子简化为基础知识。例如:

from multiprocessing import Process, Queue

def f(q):
    q.put('Hello')
    q.put('Bye')
    q.put(None)

if __name__ == '__main__':
    q = Queue()
    p = Process(target=f, args=(q,))
    p.start()
    with open('file.txt', 'w') as fp:
        while True:
            item = q.get()
            print(item)
            if item is None:
                break
            fp.write(item)
    p.join()

这里我有两个进程(主进程,一个p)。 p 将字符串放入队列中,由主进程检索。当主进程找到 None (我用来指示:“我完成了”的哨兵)时,它会中断循环。

将其扩展到许多进程(或线程)是微不足道的。

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

Python多重处理使用队列写入同一文件 的相关文章

  • 将 Django Model 对象转换为 dict,所有字段都完好无损

    如何将 django Model 对象转换为 dictall它的领域 理想情况下 所有内容都包含外键和 editable False 的字段 让我详细说明一下 假设我有一个如下所示的 django 模型 from django db imp
  • 查找具有不同强度/亮度的相似图像

    假设我有如下图像 我可以选择什么来比较两个图像之间的相似度 显然它们是相同的图像 只是亮度不同 我找不到任何可行的方法 目前我最好的选择是训练 cnn 或自动编码器并比较输出的特征向量 但这似乎有点矫枉过正 任何提示将不胜感激 相当强大的工
  • Python 中的密码子生成

    我有这段代码 用于将 DNA 字符串转换为密码子列表 然后将此列表转换为具有各自氨基酸的字符串 然而 当我运行代码并且 DNA 字符串以一对核苷酸 例如 CT 而不是三联体结尾时 代码不会生成氨基酸序列 正如您在输出中看到的 from co
  • 如何实现可运行队列

    我正在尝试实现一个可运行队列 在异步任务期间依次执行 意味着队列中的下一个将在另一个完成后执行 我编写了一个管理器来管理这些可运行对象和本身就是可运行对象的任务 然后 我获取异步任务中的第一个任务并运行它 希望它能够在队列中运行 但是它最终
  • 为不带引号的函数获取字符串参数

    我有一个函数 用于从 URL 下载文件并将其写入磁盘 并施加特定的文件扩展名 目前 它看起来像这样 import requests import os def getpml url filename psc requests get url
  • AttributeError:模块“tensorflow.python.summary.summary”没有属性“FileWriter”

    我收到此错误 尽管我到处都看过file writer tf summary FileWriter path to logs sess graph 被提到为正确的实施this https github com tensorflow tenso
  • python:如何检查一行是否为空行

    试图弄清楚如何编写一个 if 循环来检查一行是否为空 该文件有许多字符串 其中之一是一个空行 用于与其他语句分隔开 不是 我认为是一个回车符后面跟着另一个回车符 new statement asdasdasd asdasdasdasd ne
  • 是否可以使用 csv.DictReader 保持列顺序?

    例如 我的 csv 有如下列 ID ID2 Date Job No Code 我需要以相同的顺序写回各列 这dict立即打乱了顺序 所以我相信这更多是读者的问题 蟒蛇的dicts 在 3 6 之前不维持顺序 但是 无论如何 在该版本中csv
  • pandas dataframe 对列进行排序会引发索引上的 keyerror

    我有以下数据框 df peaklatency snr 0 52 99 0 0 1 54 15 62 000000 2 54 12 82 000000 3 54 64 52 000000 4 54 57 42 000000 5 54 13 7
  • 使用Python处理Sqlite数据库中的换行符“\n”?

    我有一个名为 test db 的 Sqlite 数据库 其中包含两个表 其结构如下 表 1 ID 整数主键自动增量 名称 varchar 500 颜色 varchar 500 表2 ID INTEGER PRIMARY KEY AUTOIN
  • 如何使用httplib2进行相互证书认证

    我正在使用 httplib2 从我的服务器向另一个 Web 服务发出请求 我们想要使用相互证书身份验证 我了解如何使用证书进行传出连接 h set certificate 但是如何检查应答服务器使用的证书 这张票 http code goo
  • 使用字典时如何避免 KeyError?

    现在我正在尝试编写汇编程序 但我不断收到此错误 Traceback most recent call last File Users Douglas Documents NeWS py line 44 in if item in regis
  • 如何将 MP3 音频文件读入 numpy 数组/将 numpy 数组保存到 MP3?

    有没有办法从 MP3 音频文件中读取 写入 MP3 音频文件numpy具有类似 API 的数组scipy io wavfile read https docs scipy org doc scipy 0 14 0 reference gen
  • python中的unicode错误[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 在下面的代码中我收到错误mailSe
  • 使用 matplotlib 在 python3 中对多个形状进行动画处理

    尝试在 python3 中使用 matplotlib 动画函数同时对多个对象进行动画处理 下面写的代码是我到目前为止的位置 我能够创建多个对象并将它们显示在图中 我通过使用包含矩形补丁函数的 for 循环来完成此操作 从这里开始 我希望通过
  • 使用Python构建caffe(找不到-lboost_python3)

    我正在尝试用 python 构建 caffe 但它一直这样说 CXX LD o python caffe caffe so python caffe caffe cpp usr bin ld cannot find lboost pytho
  • 如何让 IPython 按类别组织制表符补全的可能性?

    当一个对象有数百个方法时 制表符补全很难使用 通常 有趣的方法是由被检查对象的类而不是其基类定义或重写的方法 如何让 IPython 对其制表符完成可能性进行分组 以便首先检查对象的类中定义的方法和属性 然后是基类中的方法和属性 看起来像是
  • 在 Jupyter 笔记本中使用 PySpark 读取 XML

    我正在尝试读取 XML 文件 df spark read format com databricks spark xml load path to my xml 并收到以下错误 java lang ClassNotFoundExceptio
  • pandas - 组合行的字符串

    我有一个像这样的数据框 id text 1 DM HTN Enlarged prostate 2 hypertensive and on regular treatment 2 LBP 3 DM HTN Enlarged prostate
  • 如何提高大规模数据帧上 lambda 函数的性能

    我有一个df超过数亿行 latitude longitude time VAL 0 39 20000076293945312500 140 80000305175781250000 1972 01 19 13 00 00 1 2000000

随机推荐

  • 如果 netezza 中存在则删除

    我需要一个命令来删除表 如果存在 NETEZZA 类似这样的东西 drop table if exists xxx 我已经搜索并尝试了很多但没有成功 你能帮我一下吗 In netezza你可以使用这个语法 drop table table
  • iOS 所需的设备功能自动对焦相机

    我有一个 iOS 应用程序 我在其中设置Required Device Capabilities配置设置需要两者still camera and auto focus camera因为它需要在具有更好的自动对焦相机传感器的新一代设备上运行
  • Material-UI 中 IconButton 的悬停效果

    图标按钮悬停 https i stack imgur com lsYHX png 这是我正在使用的 Material UI 中的 iconButton 正如您所看到的 当您将鼠标悬停在图标上时 图标周围有一个轻微的灰色边框 禁用此功能的属性
  • 如何为单个函数设置 ICC 属性“fp-model precision”,以防止关联优化?

    我正在实施卡汉求和 http en wikipedia org wiki Kahan summation algorithm 在支持 gcc47 gcc48 clang33 icc13 和 icc14 编译的项目中 作为该算法的一部分 我想
  • Kubernetes Pod 已终止 - 退出代码 137

    我需要一些关于 k8s 1 14 和在其上运行 gitlab 管道所面临的问题的建议 许多作业都会抛出退出代码 137 错误 我发现这意味着容器突然终止 集群信息 库伯内特版本 1 14 使用的云 AWS EKS 节点 C5 4xLarge
  • 用于获取有关 SVN 存储库信息的 Python 库?

    我正在寻找一个可以从 SVN 存储库中提取 至少 以下信息的库 not工作副本 修订号及其作者和提交消息 每个修订版中的更改 添加 删除 修改文件 有Python库可以做到这一点吗 对于作者和提交消息 我可以解析 db revprops 0
  • 如何将上传的STEP文件转换为其他格式?

    如何将上传的 STEP 文件转换为其他 CAD 格式 最好使用 PHP 我将一个小型 STEP 文件上传到 3dContentCentral 并立即看到新上传的 STEP 文件的 20 种不同文件类型格式 示例网址 希望你们中的一些人能给我
  • 创建横幅交换算法来轮播广告

    我正在构建广告横幅轮播脚本基于印象整个月均匀地显示广告 每次请求显示广告时都会进行计算 所以这将是即时完成的 广告应显示为一个接一个轮流播放 而不是仅显示一个广告 1000 次展示 然后显示另一个广告 1000 次展示 大多数情况下 它应该
  • 将文件保存为 MYSQL 数据库中的 blob 或文件路径

    我知道这些问题是常见问题之一 但我需要您针对具体案例提供帮助 我正在开发一个应用程序 其中一些用户可以添加订单 一些用户可以执行这些订单 这些订单非常具体 因此只有有限数量的用户可以添加它们 然后 为每个订单生成三个文档 每个文档的大小不超
  • 尝试从输入流检索文本时应用程序挂起

    情况 我确实查看了您的代码 正如我怀疑的那样 您的问题与您发布的代码完全无关 您的 GUI 完全忽略 Swing 线程规则 并在主 Swing 事件线程 称为Event Dispatch T螺纹或EDT 由于该线程负责所有 Swing 绘图
  • Inno Setup:如何根据代码更改语言文件

    我使用自己的语言文件 isl 而不是使用 Inno Setup 的默认语言文件 它允许我自定义一些消息 但现在 我想要每种语言文件有两个版本 一个用于首次安装 一个用于更新 但是 是否可以从代码中选择一个文件 如果是 该怎么做 也许有一些比
  • Android 并获取 id 转换为字符串的视图

    在 Android 项目的 Java 代码中 如果您想要视图资源的引用 您可以执行以下操作 View addButton findViewById R id button 0 在上面的 R id button 0 不是一个字符串 是否可以通
  • @media查询和图像交换[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望在调整浏览器大小时网站中的图像完全改变 我一直在使用媒体查询 但我似乎无法正确使用它 有什么想法 建议吗 将来请添加您尝试过的代
  • IntelliJ:将“在路径中查找”范围限制为在 VCS 中跟踪的文件

    我想在 IntelliJ 中搜索整个项目目录 但将范围限制为在 VCS 中跟踪的文件 即我通过执行得到的结果相同git grep 我看到下面有一个自定义范围Find In Path gt Scope gt VCS Scopes gt Def
  • JQuery Mobile - 按钮

    如何使用 jquery mobile 禁用编码中的按钮 div Value div 注意 我想在编码中禁用该按钮 而不是在设计时 实例 http jsfiddle net LHG4L 5 http jsfiddle net LHG4L 5
  • XslCompiledTransform 和自定义 XmlUrlResolver:“具有相同键的条目已存在”

    有没有办法调试由自定义 XmlUrlResolver 从数据库加载的 XSLT 文档 或者有人知道下面的错误消息是关于什么的吗 我有一个导入通用 xslt 文档的 XSLT 样式表
  • SQL 性能除外

    我尝试使用类似于以下查询的查询来查找两个表之间的差异 DEV 数据库与 TEST 数据库中的同一个表 每个表有约 30K 行和约 5 列 select field1 field2 field3 field4 field5 from dev
  • 允许 JavaScript 请求 PHP 文件,但不能直接从浏览器请求

    我正在使用 jquery 脚本 通过 ajax 和 PHP 上传文件 它向 upload a file php 发送请求 然后上传文件 有没有办法确保 upload a file php 不会直接加载到浏览器中 我尝试将 upload a
  • Cloudfront CORS 阻止字体

    除了字体之外的所有资源都加载得很好 每当我访问我的网站时 我都会收到这样的消息 访问字体 https xxxxxxxxxx cloudfront net assets fontawesome webfont woff2 https xxxx
  • Python多重处理使用队列写入同一文件

    我知道 Stack Exchange 上有很多与将多处理结果写入单个文件相关的帖子 并且我在阅读了这些帖子后就开发了我的代码 我想要实现的是并行运行 RevMapCoord 函数并使用 multiprocess queue 将其结果写入一个