草庐IT

close_wait

全部标签

python - 如果stdout = PIPE,我如何找出为什么subprocess.Popen wait() 永远等待?

我有一个写入标准输出和可能标准错误的程序。我想从python运行它,捕获标准输出和标准错误。我的代码如下:fromsubprocessimport*p=Popen(exe,shell=TRUE,stdout=PIPE,stderr=PIPE)rtrncode=p.wait()对于几个程序,这可以正常工作,但是当我添加一个新程序时,新程序会永远挂起。如果我删除stdout=PIPE,程序会将其输出写入控制台并完成,一切都很好。如何确定导致挂起的原因?在WindowsXP上使用python2.5。该程序不会从标准输入读取数据,也没有任何类型的用户输入(即“按下键”)。

python - 使用子进程 wait() 和 poll()

我正在尝试编写一个使用subprocess模块的小应用程序。我的程序调用了一个需要一些时间来处理的外部Bash命令。在此期间,我想向用户展示一系列这样的消息:Processing.Pleasewait...Theoutputisfoo()如何使用Popen.wait()或Popen.poll()来做到这一点。我读过我需要使用Popen.returncode,但我不知道如何让它主动检查状态。 最佳答案 两者wait()(指定了timeout)和poll()如果进程尚未完成,则返回None,如果进程已完成,则返回不同的值(我认为是一个整

python - 我必须做 StringIO.close() 吗?

一些代码:importcStringIOdeff():buffer=cStringIO.StringIO()buffer.write('something')returnbuffer.getvalue()documentation说:StringIO.close():Freethememorybuffer.AttemptingtodofurtheroperationswithaclosedStringIOobjectwillraiseaValueError.我必须做buffer.close(),否则当缓冲区超出范围并被垃圾收集时它会自动发生?更新:我做了一个测试:importStrin

python - Matplotlib 和 Pyplot.close() 不释放内存? - 后端相关的 Qt4Agg

编辑:如果我明确地将matplotlib的后端从“Qt4Agg”更改为“Agg”,那么我就可以毫无错误地运行我的代码。我认为这是后端的错误?我正在编写一些代码来自动处理大量数据。代码首先解析我的数据文件并存储所有相关位。然后我有不同的函数来生成我需要的每个图表(总共大约有25个)。但是,我一直遇到某种内存错误,我认为这是因为Matplotlib/PyPlot没有正确释放内存。每个绘图函数都以pyplot.close(fig)命令结束,因为我只想保存图形而不是立即查看它们,它们确实不包含pyplot.show()。如果我在解释器中单独运行绘图函数,那么我不会遇到任何问题。但是,如果我创建

python - 在 Python 文件对象上使用迭代器时是否需要 close()

这个问题在这里已经有了答案:Isexplicitlyclosingfilesimportant?(7个回答)关闭7年前。执行以下操作并且不显式处理文件对象并调用其close()方法是不好的做法吗?forlineinopen('hello.txt'):printline注意-这适用于还没有with语句的Python版本。我问,因为Python文档似乎建议这样做:-f=open("hello.txt")try:forlineinf:printlinefinally:f.close()这似乎比必要的更冗长。 最佳答案 在处理文件时总是需要

python - 我应该在 urllib.urlopen() 之后调用 close() 吗?

我是Python新手,正在阅读别人的代码:urllib.urlopen()后面应该跟urllib.close()吗?否则,会泄漏连接,对吗? 最佳答案 close方法必须在urllib.urlopen的result上调用,不是在urllib上您正在考虑的模块本身(正如您提到的urllib.close-它不存在)。最好的方法:而不是x=urllib.urlopen(u)等等,使用:importcontextlibwithcontextlib.closing(urllib.urlopen(u))asx:...usexatwillhere

node.js - 在 MongoDB 中,如果 close() 有时可能不会被调用,如何确保所有连接都将关闭?

我正在使用node.js和MongoDB,并且我有异步代码(async.queue)来更新MongoDB。当队列中的所有任务都完成后,我调用db.close()//dbisaMongoclientinstance因此任务使用的所有连接都被关闭。但是,在极少数情况下,我发现在mongoDB日志中存在从未关闭的打开连接。所以几周后,将有数百个连接永远不会关闭。我研究发现也许我应该设置这个选项maxIdleTimeMS,但是这个选项并不是所有驱动都支持(node.js驱动不支持这个选项)。即使我可以微调我的代码以确保不存在不调用close()的情况。我仍然想知道如果应用程序出于某种原因(或作

node.js - 在 MongoDB 中,如果 close() 有时可能不会被调用,如何确保所有连接都将关闭?

我正在使用node.js和MongoDB,并且我有异步代码(async.queue)来更新MongoDB。当队列中的所有任务都完成后,我调用db.close()//dbisaMongoclientinstance因此任务使用的所有连接都被关闭。但是,在极少数情况下,我发现在mongoDB日志中存在从未关闭的打开连接。所以几周后,将有数百个连接永远不会关闭。我研究发现也许我应该设置这个选项maxIdleTimeMS,但是这个选项并不是所有驱动都支持(node.js驱动不支持这个选项)。即使我可以微调我的代码以确保不存在不调用close()的情况。我仍然想知道如果应用程序出于某种原因(或作

python - 值错误 : I/O operation on closed file

importcsvwithopen('v.csv','w')ascsvfile:cwriter=csv.writer(csvfile,delimiter='',quotechar='|',quoting=csv.QUOTE_MINIMAL)forw,cinp.items():cwriter.writerow(w+c)这里,p是字典,w和c都是字符串。当我尝试写入文件时,它会报告错误:ValueError:I/Ooperationonclosedfile. 最佳答案 正确缩进;您的for语句应该在with内block:importcs

python - socket.shutdown 与 socket.close

我最近看到了一些看起来像这样的代码(当然sock是一个套接字对象):sock.shutdown(socket.SHUT_RDWR)sock.close()在套接字上调用shutdown然后关闭它的目的到底是什么?如果有所不同,则此套接字正在用于非阻塞IO。 最佳答案 调用close和shutdown对底层套接字有两种不同的影响。首先要指出的是,套接字是底层操作系统中的资源,多个进程可以拥有同一个底层套接字的句柄。当您调用close时,它会将句柄计数减一,如果句柄计数达到零,则套接字和关联的连接将通过正常的关闭过程(有效地将FIN/E