是什么促成了rlimit NPROC?

时间:2017-12-08 17:26:50

标签: python process jupyter-notebook ipython-notebook

我在Jupyter笔记本中有以下代码:

import resource
resource.setrlimit(resource.RLIMIT_NPROC, (1024, 1024))
while True:
    try:
        pid = os.fork()
        if pid != 0:
            count += 1
        else: 
            break
    except Exception as e:
        print(e)
        print("COUNT: ", count)

根据我的理解,这应该保持分叉直到它达到1024,然后捕获异常并且创建的进程数应该是1024.

当我跑步时,我第一次得到896,但每次之后,即使是第一个叉也不会跑。
我猜测896是因为Jupyter的一些开销,但为什么在我专门重新连接后执行的数量会持续存在以便重新调用popen?

nproc限制的作用是什么?它是所有子进程和分叉吗?如果是这样,有什么方法可以得到这些列表吗?

我尝试过阅读/proc/self/task的孩子,但这些孩子的数量是不变的。

另外,在Jupyter popen命令中设置RLIMIT_NPROC是否等同于运行ulimit -u?这相当于在RLIMIT_NPROC中设置preexec_fn吗?

0 个答案:

没有答案