psutil异常错误没有此类进程

2024-06-17 13:36:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Raspberry Pi上有两个独立的Python脚本,它们通过调用raspistill os函数异步访问RPi相机。我以为我有一个函数在工作,可以检查raspistill进程是否正在运行,如果是的话,会等到它清除后才能运行。在这两个脚本中,我都包含了以下函数:

from time import sleep
import psutil

def camFree():
    for pid in psutil.pids():
        p = psutil.Process(pid)
        if(p.name() == 'raspistill'):
            return False
    return True

然后,在raspistill调用之前,我在代码中对camFree进行以下调用,如下所示:

^{pr2}$

我每分钟都会运行这个脚本来拍照,并将脚本的输出重定向到日志文件。大多数时候,我对脚本的运行没有任何问题。但是,偶尔(不一定是在其他摄影机脚本运行时)出现以下错误:

Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/psutil/_pslinux.py", line 1369, in wrapper
    return fun(self, *args, **kwargs)
  File "/usr/local/lib/python3.4/dist-packages/psutil/_pslinux.py", line 1546, in create_time
    values = self._parse_stat_file()
  File "/usr/local/lib/python3.4/dist-packages/psutil/_common.py", line 337, in wrapper
    return fun(self)
  File "/usr/local/lib/python3.4/dist-packages/psutil/_pslinux.py", line 1408, in _parse_stat_file
    with open_binary("%s/%s/stat" % (self._procfs_path, self.pid)) as f:
  File "/usr/local/lib/python3.4/dist-packages/psutil/_pslinux.py", line 190, in open_binary
    return open(fname, "rb", **kwargs)
FileNotFoundError: [Errno 2] No such file or directory: '/proc/15538/stat'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/psutil/__init__.py", line 428, in _init
    self.create_time()
  File "/usr/local/lib/python3.4/dist-packages/psutil/__init__.py", line 754, in create_time
    self._create_time = self._proc.create_time()
  File "/usr/local/lib/python3.4/dist-packages/psutil/_pslinux.py", line 1380, in wrapper
    raise NoSuchProcess(self.pid, self._name)
psutil.NoSuchProcess: psutil.NoSuchProcess process no longer exists (pid=15538)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/pi/projects/daytimelapse/daytimelapse.py", line 189, in <module>
    while(camFree() is False):           # wait until camera is not being used
  File "/home/pi/projects/daytimelapse/daytimelapse.py", line 108, in camFree
    p = psutil.Process(pid)
  File "/usr/local/lib/python3.4/dist-packages/psutil/__init__.py", line 401, in __init__
self._init(pid)
  File "/usr/local/lib/python3.4/dist-packages/psutil/__init__.py", line 441, in _init
    raise NoSuchProcess(pid, None, msg)
psutil.NoSuchProcess: psutil.NoSuchProcess no process found with pid 15538

任何帮助都将不胜感激!谢谢,戴夫


Tags: inpyself脚本timeinitlibpackages