Pausing a process?

☆樱花仙子☆ 提交于 2019-11-29 06:21:56

By using psutil ( https://github.com/giampaolo/psutil ):

>>> import psutil
>>> somepid = 1023
>>> p = psutil.Process(somepid)
>>> p.suspend()
>>> p.resume()

you are thinking of SIGTSTP -- the same signal that happens when you push CTRL-Z. This suspends the process until it gets SIGCONT.

of course, some programs can just catch and ignore this signal, so it depends on the executable. however, if you can suspend and resume it manually, you can do it from a python program, too. use os.kill()

I just implemented this with signals in python something like this:

def mysignalhandler(sig, frame):
  print "Got " + str(sig)
  if sig == signal.SIGUSR1:
    do_something()

signal.signal(signal.SIGUSR1, mysignalhandler)

signal.pause()

This will pause at the last line and call do_something() when it receives the signal USR1, for example through a

kill -USR1 <pid>

command.

This will only work in UNIX though.

Farid

There is a (almost) native way of doing this in Python, and it's quite simple :

import time
time.sleep(5)

In this snippet, 5 is the number of seconds you want to pause your program.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!