【问题标题】:How to stop/terminate a python script from running with BackgroundScheduler() of APScheduler如何使用 APScheduler 的 BackgroundScheduler() 停止/终止 python 脚本运行
【发布时间】:2021-03-20 02:43:50
【问题描述】:

我正在尝试从 foo() 函数内部停止 while 循环的执行。我试过 exit() / sys.exit 没有成功。如何从函数内部完全停止程序的执行?

from apscheduler.schedulers.background import BackgroundScheduler
from datetime import datetime, timedelta
import time
import sys

def foo(stop = False):
    print('Function foo executed')
    if stop: 
        sys.exit

scheduler = BackgroundScheduler() 
dd = datetime.now() + timedelta(seconds=10)
scheduler.add_job(foo, 'date', run_date=dd, args=[True])
scheduler.start()

while True:
    print('Inside the loop')
    time.sleep(2)

【问题讨论】:

    标签: python exit execution terminate apscheduler


    【解决方案1】:

    使用psutil

    import psutil
    
    psutil.Process().terminate()
    

    从文档中, psutil.Process() 如果省略 PID,则使用当前进程 PID (os.getpid())。

    注意 terminate 会以退出代码 0 离开。如果您想要其他退出代码,可以使用 send_signal() 甚至 kill()

    【讨论】:

      猜你喜欢
      • 2013-11-15
      • 2020-04-10
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 2019-07-17
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多