我正在使用python-omxplayer-wrapper触发项目的音效。尽管为播放器对象调用了相关的stop()或quit()方法,但每次触发该过程时,都会留下一个打开的文件流。最终,由于“打开的文件太多”,应用程序失败。我正在尝试找到一种方法(使用psutil,子进程等)来标识这些流并关闭它们。
lsof的样本输出|触发7次音效后,grep'12611'(12611是python进程ID):
python 12611 pi 0u CHR 136,2 0t0 5 /dev/pts/2
python 12611 pi 1u CHR 136,2 0t0 5 /dev/pts/2
python 12611 pi 2u CHR 136,2 0t0 5 /dev/pts/2
python 12611 pi 3u unix 0x9be72d00 0t0 219115 type=STREAM
python 12611 pi 4u unix 0x9be74c00 0t0 219245 type=STREAM
python 12611 pi 5u unix 0x9be71b00 0t0 218986 type=STREAM
python 12611 pi 6u unix 0x9be71800 0t0 219102 type=STREAM
python 12611 pi 7u unix 0x9be70000 0t0 219122 type=STREAM
python 12611 pi 8u unix 0x9be76a00 0t0 219986 type=STREAM
python 12611 pi 9u unix 0x9be76700 0t0 220066 type=STREAM
我假设问题是由所有类型为“ STREAM”的孤立条目引起的。 psutils.Process(12611).open_files()产生一个空列表。如何杀死这些流而不杀死父python进程?
(有关python-omxplayer-wrapper的相关但未解决的问题:https://github.com/willprice/python-omxplayer-wrapper/issues/176)