当前位置 博文首页 > 长歌:使用Qpython编写Python程序“耗尽”安卓设备内存

    长歌:使用Qpython编写Python程序“耗尽”安卓设备内存

    作者:[db:作者] 时间:2021-08-12 18:03

    博文参考:https://blog.csdn.net/kongxx/article/details/51668547 感谢博主:kongxx

    前言

    为了手机设备的稳定性,是不会允许耗尽内存这种操作的。因为有Android lowmemorykiller机制https://blog.csdn.net/u011733869/article/details/78820240,
    感兴趣的同学可以了解一下这个机制。

    一、安装Qpython

    内容来自百度百科:

    《QPython》是一个脚本引擎,他整合了Python解释器、Console、编辑器和SL4A库。可以让你在Android设备上运行Python语言开发的程序。它就是Android上的Python!此外,它提供了开发工具能让你在Android设备上方便地开发Python项目。

    一般手机应用商店会有该应用,直接去应用商店下载即可。

    二、编写程序与运行

    # -*-coding:utf8;-*-
    # qpy:console
    # qpy:2
    import sys
    import re
    import time
    import androidhelper
    
    
    def print_help():
        print 'Usage: Input Memory Size'
        print 'For Example: 10MB'
        print 'For Example: 1GB'
    
    if __name__ == "__main__":
        #下面两行代码可以看Qpython自带的程序里面的Helloworld.py
        droid = androidhelper.Android()
        target = str(droid.dialogGetInput().result)
    
        if target:
            pattern = re.compile('^(\d*)([M|G]B)$')
            match = pattern.match(target.upper())
            if match:
                num = int(match.group(1))
                unit = match.group(2)
                if unit == 'MB':
                    s = ' ' * (num * 1024 * 1024)
                else:
                    s = ' ' * (num * 1024 * 1024 * 1024)
    
                time.sleep(10000)
            else:
                print_help()
        else:
            print_help()

    支持输入GB和MB两种方式,没有空格比如直接输入 :1GB 或者1024MB,核心代码如下:

     s = ' ' * (num * 1024 * 1024)

    原理就是,空格占一个字节,字符串乘法是python的特性,通过申请一个多少GB或MB的字符串占用相应的内存。

    三、效果展示

    这里写图片描述
    操作前剩余内存有1.6GB,使用程序吃掉1G,剩余600MB左右,这里博主没有输入更多,因为手机安全策略问题,当内存不够时会Kill掉同步工具。

    cs