gpt4 book ai didi

python - 来自听众的循环中断

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:43 25 4
gpt4 key购买 nike

我正在寻找一个简单的 python 进程,该进程开始在后台运行,并通过循环计算分钟数。我想向进程发送一个信号(从脚本外部)以打破循环。可能同时打开和运行多个此类脚本。

while True:
timer=timer+1
time.sleep(60)
# listener that receives a signal from outside the program
# to stop the loop return timer and then end the program
if (timeup==True):
break

最佳答案

您可以使用 signal

import signal, time, os

abort = False
def stop(sig, stack):
global abort
print('Got signal!')
abort = True

signal.signal(signal.SIGUSR1, stop)

print('My pid: %s' % os.getpid())

while True:
time.sleep(1)
print('Hello')

if (abort):
break

这将输出如下内容:

[~]% python test.py
My pid: 24341
Hello
Hello
Hello

然后您可以使用kill(1) 发送信号:

[~]% kill -USR1 24341

据我所知,没有明显的方法可以从 Python 发送信号,但是您可以使用带有 subprocess 的 start kill模块(有点难看,但有效)。

顺便说一句,您可以在 PHP 中使用相同的技术。参见 pcntl_signal() (您需要安装 pcntl 模块)。

另见:

您可以使用的其他进程间通信 (IPC) 方法可能是:

  • 有状态的文件
  • 共享内存
  • 先进先出
  • 通过网络发送数据(当两个程序在同一台机器上时也能很好地工作)

我不打算为所有这些提供示例,恕我直言,使用信号是这里最明显的选择。

关于python - 来自听众的循环中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21921216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com