内存密集型Python程序

2024-09-29 03:41:13 发布

您现在位置:Python中文网/ 问答频道 /正文

最近有人问我一个采访问题,我很想知道这个问题的答案,尽管我在采访中无法回答:给定的用户A和用户B以非root用户的身份在ubuntu12.04服务器上运行他们的任务。用户A正在运行mongodb,内存使用率为52.2%。在python中是否有一个程序可以让用户B运行,这样用户a的程序会自行终止或自行终止。在

我的尝试:我试图以用户B的身份将一个非常大的文件读入内存,但是这样做用户B的程序本身就会被操作系统终止或终止。有什么方法可以杀死另一个非根用户的内存密集型程序吗?在

面试官给了我一个提示……他说如果你的进程(用户B)比用户A更需要内存,那么用户A的进程在某个时候会自动被杀死。但我不明白如何设计这样一个内存密集型程序


Tags: 文件方法内存答案用户程序服务器进程
1条回答
网友
1楼 · 发布于 2024-09-29 03:41:13

大部分(全部?)现代操作系统采用内存保护。它们一般不允许一个进程访问另一个进程的内存。这可以防止内存量大的应用程序使用分配给其他进程的内存。一旦物理内存用完,内存密集型应用程序的数据将被写入交换文件。一旦交换文件也已满,操作系统将终止该进程。在

因此,为了让UserB终止UserA的进程,它必须耗尽剩余的可用内存并进行交换。一旦UserA的进程需要更多的内存,操作系统就会终止它,以保护UserB的进程。在

这个过程对用户来说很容易设计。只需生成并打开一个足够大的文件。用来打开文件的程序,像Python解释器一样,将加载内存中的内容。在

kill_list = []
try:
    while True:
        kill_list.append(1)
except MemoryError:
    pass

那应该行。它将占用尽可能多的内存,而不会被操作系统杀死。现在等待。。。在

相关问题 更多 >