pythonosfork
㈠ python如何终止os.system调用的程序
建议用subprocess
因为如果你的程序不会自动停止,那么用os.system(cmd),cmd会一直持续运行知道调用的程序返回结果。
subprocess可以开启一个子线程,在子线程里面调用,在你需要的时候就可以把这个子线程关掉,这样代码也更灵活
例如:
p = subprocess.Popen("your command")
#todo
#anything you want
time.sleep(10)
p.kill()
这段代码就是在"your command"运行10秒以后,把它杀掉
㈡ python结束程序的语句
sys.exit()
Python中,当有时当一个条件成立的情况下,需要终止程序,可以使用sys.exit()退出程序。sys.exit()会引发一个异常。
1.如果这个异常没有被捕获,那么python编译器将会退出,后面的程序将不会执行。
2.如果这个异常被捕获(try...except...finally),捕获这个异常可以做一些额外的清理工作,后面的程序还会继续执行。
注:0为正常退出,其他数值(1-127)为不正常,可抛异常事件供捕获。
另一种终止程序的方法os._exit(),一般情况下使用sys.exit()即可,一般在fork出来的子进程中使用os._exit()。
㈢ python哪个函数启动进程和关闭进程
任何一种编程语言,启动进程和关闭进程都是跟操作系统相关的操作,python中与操作系统打交道的话,推荐使用os模块。
os.system() 函数可以启动一个进程,执行完之后返回状态码。
os.fork() 复制一个进程,如果是子进程返回0,如果是父进程返回子进程的pid,使用这个函数的时候,建议你学习一下linux编程的知识。
os.popen 以管道的方式创建进程。
os.spawnl 也可以创建进程,并能指定环境变量。
os.kill(pid, sig) 关闭一个进程,pid是进程号,sig是信号。与fork配合使用,例如你刚才用fork创建了一个子进程,它的pid是11990, 那么调用
os.kill( 11990, signal.CTRL_BREAK_EVENT)
就以ctrl+c的方式杀死了这个进程。
另外还有一个模块multiprocessing,这个模块封装了很多创建进程和进程间通信的操作,可以让你发挥多核的威力。