13

Is there a way to pause a process (running from an executable) so that it stops the cpu load while it's paused, and waits till it's unpaused to go on with its work? Possibly in python, or in some way accessible by python.

2
  • do you mean thread or running system process ? Commented May 10, 2010 at 16:11
  • 1
    I would be inclined to lower process priority rather than "pausing" it. That way other processes will go first Commented Nov 20, 2010 at 0:25

4 Answers 4

22

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

>>> import psutil >>> somepid = 1023 >>> p = psutil.Process(somepid) >>> p.suspend() >>> p.resume() 
Sign up to request clarification or add additional context in comments.

Comments

7

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()

2 Comments

and how do I unsuspend it so that it continues work from where it was before?
SIGSTOP can't be blocked and would be slightly more accurate in this context, not coming from a tty. en.wikipedia.org/wiki/SIGSTOP
2

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.

Comments

-2

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.

1 Comment

This doesn’t answer the question; which is about pausing another process.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.