用上面的代码 监控 running.py 代码如下 import time while True: for i in range(1000): print("0001",i) time.sleep(1) 监控不到
时间: 2024-10-23 17:14:45 浏览: 20
代码书写规范
看起来你在尝试通过脚本监控另一个Python程序 `running.py`,这个程序是一个无限循环,每秒打印一次数字。你的监控代码使用`pgrep` 或者`psutil` 来检测程序的存在,但它可能无法找到`running.py` 因为这个程序并不是作为独立的进程启动,而是作为当前交互式会话的一部分在运行。
在Python中,直接使用`import`不会启动一个新的进程,所以当你在`running.py` 文件内导入并执行`time.sleep(1)`,那个代码会在当前线程中暂停,而不是作为一个单独的进程。因此,`pgrep` 和类似工具不会将其识别为一个独立运行的进程。
如果你想监控这样的循环,可以考虑使用`threading`模块创建一个新线程来运行`running.py`,然后监控该新线程的状态。或者,如果你希望在当前进程中监视输出,可以利用Python的`sys.stdout`来捕获`print()`的输出。
```python
import sys
import time
from threading import Thread
def start_running():
script_path = 'running.py'
thread = Thread(target=lambda: exec(open(script_path).read()))
thread.start()
while True:
for i in range(1000):
print("主程序", i)
# 检查`running.py` 的输出是否到达,例如看sys.stdout的内容
if sys.stdout.getvalue().find("0001") != -1:
print("0001 found in running.py's output")
time.sleep(1)
start_running()
```
这样,当`running.py` 输出"0001"时,主程序也能感知到。
阅读全文