Приостановить процесс? - PullRequest
11 голосов
/ 10 мая 2010

Есть ли способ приостановить процесс (запущенный из исполняемого файла), чтобы он останавливал загрузку процессора во время паузы и ждал, пока он не будет приостановлен, чтобы продолжить свою работу? Возможно в python или каким-то образом доступным для python.

Ответы [ 4 ]

14 голосов
/ 20 ноября 2010

Используя psutil (https://github.com/giampaolo/psutil):

>>> import psutil
>>> somepid = 1023
>>> p = psutil.Process(somepid)
>>> p.suspend()
>>> p.resume()
5 голосов
/ 10 мая 2010

вы думаете о SIGTSTP - тот же сигнал, который происходит, когда вы нажимаете CTRL-Z.Это приостанавливает процесс до тех пор, пока он не получит SIGCONT .

Конечно, некоторые программы могут просто перехватывать и игнорировать этот сигнал, поэтому это зависит от исполняемого файла.однако, если вы можете приостановить и возобновить его вручную, вы можете сделать это и из программы на Python.используйте os.kill()

2 голосов
/ 14 января 2014

Я только что реализовал это с помощью сигналов в Python примерно так:

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

signal.signal(signal.SIGUSR1, mysignalhandler)

signal.pause()

Это сделает паузу в последней строке и вызовет do_something(), когда получит сигнал USR1, например, через

kill -USR1 <pid>

команда.

Это будет работать только в UNIX.

0 голосов
/ 28 июня 2013

Существует (почти) нативный способ сделать это в Python, и он довольно прост:

import time
time.sleep(5)

В этом фрагменте 5 - это число секунд , которое вы хотите приостановить в своей программе.

...