在jupyter / ipython笔记本中设置优先级/好处

时间:2017-12-01 19:52:46

标签: python linux environment-variables ipython jupyter-notebook

有没有办法在笔记本电脑中设置较低的jupyter笔记本的CPU优先级?例如。在计算服务器上运行一天的参数搜索时,将该笔记本中的优先级设置为其他人正在实时处理的笔记本。

2 个答案:

答案 0 :(得分:1)

我猜你可以重新整理整个服务器(不知道有什么方法来管理特定的笔记本)。如果其他笔记本电脑在不同的笔记本电脑服务器进程上运行,您可以从子shell中执行此操作:

---------------------------------------------------------------
  !for pid in `pgrep -f jupyter`; do { renice -20 $pid; }; done
---------------------------------------------------------------

9721 (process ID) old priority 19, new priority -20
12449 (process ID) old priority 19, new priority -20
25502 (process ID) old priority 19, new priority -20

或者,如果您想在Python中执行此操作,请首先获取正在运行的服务器列表:

>>> from notebook import notebookapp
>>> servers = list(notebookapp.list_running_servers())
>>> servers
[{'url': 'http://localhost:8888/', 
  'base_url': '/', 
  'token': '5ea29b3...7e1fba5331ae', 
  'secure': False, 
  'pid': 9721, 
  'hostname': 'localhost', 
  'password': False, 
  'port': 8888, 
  'notebook_dir': '/home/paulos/work'
}]

根据需要过滤所需的列表。

pids = [_['pid'] for _ in servers if meets_condition(_)]

然后调用setpriority:

>>> from ctypes import cdll
>>> libc = cdll.LoadLibrary("libc.so.6")
>>> pids = [_['pid'] for _ in servers]
>>> for pid in pids:
        print("old priority for PID", pid, "is", libc.getpriority(0, pid))
        libc.setpriority(0, pid, 20)
        print("new priority for PID", pid, "is", libc.getpriority(0, pid))

old priority for PID 9721 is 0
new priority for PID 9721 is 19

答案 1 :(得分:0)

也许为您设置conda config --describe进程的优先级就足够了吗?初始进程尽可能继承优先级。 如果是,请使用以下代码为我提供帮助:

python