Python:如何从另一个脚本终止一个脚本的功能

时间:2019-01-29 16:54:46

标签: python

我有一个脚本main.py,该脚本从库中调用了函数fun。 我只想退出fun,继续执行脚本main.py,为此使用另一个脚本kill_fun.py

我尝试对ps使用不同的bash命令(使用os.system),但是它给我的pid仅指向main.py

示例:

-main.py

from lib import fun

if __name__ == '__main__':
    try:
        fun()
    except:
        do_something
    do_something_else

-lib.py

def fun():
    do_something_of_long_time

-kill_fun.py

if __name__ == '__main__':
    kill_only_fun

1 个答案:

答案 0 :(得分:0)

您可以通过在其他过程中运行fun来实现。

from time import sleep
from multiprocessing import Process
from lib import fun

def my_fun():
        tmp = 0
        for i in range(1000000):
                sleep(1)
                tmp += 1
                print('fun')
        return tmp

def should_i_kill_fun():
        try:
                with open('./kill.txt','r') as f:
                        read = f.readline().strip()
                        #print(read)
                        return read == 'Y'
        except Exception as e:
                return False

if __name__ == '__main__':
    try:
        p = Process(target=my_fun, args=())
        p.start()
        while p.is_alive():
            sleep(1)
            if should_i_kill_fun():
                p.terminate()
    except Exception as e:
        print("do sth",e)
    print("do sth other thing")

要杀死fun,只需echo 'Y' > kill.txt

或者您也可以编写python脚本来编写文件。

说明 这个想法是在一个不同的过程中启动funp是您可以控制的流程处理程序。然后,我们放入一个循环来检查文件kill.txt,以查看是否存在kill命令'Y'。如果是,则调用p.terminate()。然后,该过程将被终止,并继续执行下一步操作。

希望这会有所帮助。