python – Jython:subprocess.Popen用完了文件描述符
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Jython:subprocess.Popen用完了文件描述符,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1005字,纯文字阅读大概需要2分钟。
内容图文
![python – Jython:subprocess.Popen用完了文件描述符](/upload/InfoBanner/zyjiaocheng/783/e7ab94ddd52143a18e7e00e4069b7f86.jpg)
我正在使用Python的Jython 2.51实现来编写一个脚本,该脚本通过subprocess.Popen重复调用另一个进程,并使用PIPE将stdout和stderr传递给父进程,并将stdin传递给子进程.经过几百次循环迭代后,我似乎用完了文件描述符.
除了close_fds选项之外,Python subprocess documentation没有提及释放文件描述符的问题,这个描述没有得到很清楚的描述(为什么除了0,1和2之外还有任何文件描述符在开头?).我假设在CPython中,引用计数负责资源释放问题.当在Jython中使用Popen对象完成时,确保所有描述符都被释放的正确方法是什么?
编辑:以防它有所不同,这是一个多线程程序,因此有几个Popen进程同时运行.
解决方法:
这只回答了你的部分问题,但我的理解是,当你产生一个新进程时,它通常会继承父进程的所有句柄.这包括您正在侦听的打开文件和套接字等内容.
在UNIX上,这是使用’fork’的副作用,它在加载新的可执行文件之前复制当前进程及其所有句柄.在Windows上它更明确,但无论如何Python都会这样做,尽可能地尝试跨平台匹配行为.
close_fds选项,当为True时,在生成子进程后关闭所有这些继承的句柄,因此新的可执行文件以干净的平板开始.但是如果你的子进程一次运行一个,并在它们完成时终止,那么这应该不是问题.
内容总结
以上是互联网集市为您收集整理的python – Jython:subprocess.Popen用完了文件描述符全部内容,希望文章能够帮你解决python – Jython:subprocess.Popen用完了文件描述符所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。