• <bdo id='PXObX'></bdo><ul id='PXObX'></ul>

  • <i id='PXObX'><tr id='PXObX'><dt id='PXObX'><q id='PXObX'><span id='PXObX'><b id='PXObX'><form id='PXObX'><ins id='PXObX'></ins><ul id='PXObX'></ul><sub id='PXObX'></sub></form><legend id='PXObX'></legend><bdo id='PXObX'><pre id='PXObX'><center id='PXObX'></center></pre></bdo></b><th id='PXObX'></th></span></q></dt></tr></i><div id='PXObX'><tfoot id='PXObX'></tfoot><dl id='PXObX'><fieldset id='PXObX'></fieldset></dl></div>
  • <small id='PXObX'></small><noframes id='PXObX'>

      <legend id='PXObX'><style id='PXObX'><dir id='PXObX'><q id='PXObX'></q></dir></style></legend>

    1. <tfoot id='PXObX'></tfoot>

        需要在不通信的情况下避免子进程死锁

        时间:2024-08-11

        • <i id='tuws0'><tr id='tuws0'><dt id='tuws0'><q id='tuws0'><span id='tuws0'><b id='tuws0'><form id='tuws0'><ins id='tuws0'></ins><ul id='tuws0'></ul><sub id='tuws0'></sub></form><legend id='tuws0'></legend><bdo id='tuws0'><pre id='tuws0'><center id='tuws0'></center></pre></bdo></b><th id='tuws0'></th></span></q></dt></tr></i><div id='tuws0'><tfoot id='tuws0'></tfoot><dl id='tuws0'><fieldset id='tuws0'></fieldset></dl></div>
          1. <tfoot id='tuws0'></tfoot>

            1. <small id='tuws0'></small><noframes id='tuws0'>

                <bdo id='tuws0'></bdo><ul id='tuws0'></ul>

                  <tbody id='tuws0'></tbody>

                <legend id='tuws0'><style id='tuws0'><dir id='tuws0'><q id='tuws0'></q></dir></style></legend>

                  本文介绍了需要在不通信的情况下避免子进程死锁的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我需要一个EXECUTE命令,该命令会产生大量输出并花费大量时间执行(>30分钟)。我在考虑使用子进程。打开去做。我需要捕获该命令的输出,因此我将管道传递给stdout和stderr。

                  使用Popen.Wait()时的死锁问题在很多论坛上都有很好的文档记录,因此Popen.Communication()是建议的避免死锁的方法。该解决方案的问题是Communication()会阻塞,直到命令完成。在执行命令时,我需要打印到达标准输出的所有内容。如果20分钟后没有输出,脚本执行将被终止。

                  以下是我需要遵守的一些约束:

                  • 我的Python版本是2.4.2,无法升级。
                  • 如果解决方案仍然使用子进程,我需要将subprocess.PIPE传递给所有STD句柄以避免此错误:http://bugs.python.org/issue1124861

                  有办法吗?

                  推荐答案

                  • 要解决python bug #1124861在Python2.4上的问题,您可以将stdin附加到NUL设备

                  import os
                  from subprocess import PIPE, STDOUT, Popen
                  
                  lines = []
                  p = Popen(cmd, bufsize=1, stdin=open(os.devnull), stdout=PIPE, stderr=STDOUT)
                  for line in iter(p.stdout.readline, ''):
                        print line,          # print to stdout immediately
                        lines.append(line)   # capture for later
                  p.stdout.close()
                  p.wait()
                  

                  这篇关于需要在不通信的情况下避免子进程死锁的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何在Python中打开和读取输入文件并将其打印到输出文件? 下一篇:重置并重新启动pyGame程序不起作用

                  相关文章

                  <legend id='Obldl'><style id='Obldl'><dir id='Obldl'><q id='Obldl'></q></dir></style></legend>
                • <i id='Obldl'><tr id='Obldl'><dt id='Obldl'><q id='Obldl'><span id='Obldl'><b id='Obldl'><form id='Obldl'><ins id='Obldl'></ins><ul id='Obldl'></ul><sub id='Obldl'></sub></form><legend id='Obldl'></legend><bdo id='Obldl'><pre id='Obldl'><center id='Obldl'></center></pre></bdo></b><th id='Obldl'></th></span></q></dt></tr></i><div id='Obldl'><tfoot id='Obldl'></tfoot><dl id='Obldl'><fieldset id='Obldl'></fieldset></dl></div>

                    <tfoot id='Obldl'></tfoot>
                      <bdo id='Obldl'></bdo><ul id='Obldl'></ul>

                      <small id='Obldl'></small><noframes id='Obldl'>