python运行过程中占用内存越来越大_Python 程序运行时CPU和内存高解决思路

这篇文章是基于上篇文章的续章~

一台机器要部署很多爬虫,每天定时执行的情况下,服务器CPU和内存占比较高的情况出现后

模拟一份代码,进行分析。

5c035ee8cc417584135a02c71274b177.png

一个简单的爬虫程序,爬取10页数据共计150条,每天定时写入数据库

总共不到150行,没运行期间内存已经20%多了,运行期间内存会涨到60%,CPU会涨到40%左右

一个简单程序如此高的消耗肯定是有问题的,参考了网上的一些文章

有使用工具的,安装第三方包的,写时间判断的等等

但是对我的帮助不大(windows....)

努(带)力(薪)工(拉)作(*)之后,根据看过的文章思考了一番:1.内存和CPU高代表着程序当中的部分代码在大量或反复的执行2.爬取的时间3-4秒,写入MYSQL数据库,解析使用的XPATH,

保存数据使用的单表,索引只有ID和URL,表结构数据长度都合适3.使用了线程,线程数4个4.没有文件读写操作,网络请求较快,对方服务器响应较快5.使用了schedule定时模块6.对后台接口进行任务轮询和定时模块当中出现了while True

还有文章提到判断导入的模块是否时c写的,导致底层频繁调用,首先这个说法不说对不对...一是不会看,二是看了不也得用这个模块吗

所以不考虑这种情况1.部分代码在大量或反复的执行&

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Android Debug Bridge (ADB)工具来查看手机app运行时CPU内存占用情况。以下是一些命令示例: 1. 查看设备列表:`adb devices` 2. 连接到设备:`adb -s <device_id> shell` 3. 查看进程列表:`ps` 4. 查看指定进程的CPU内存占用情况:`top -n 1 | grep <package_name>` 其,`<device_id>`是设备的ID,可以通过`adb devices`命令获取;`<package_name>`是应用程序的包名。 另外,还可以使用Python的`subprocess`模块来执行上述命令并获取输出结果,然后对结果进行解析和处理。例如: ```python import subprocess # 获取设备列表 devices_output = subprocess.check_output(['adb', 'devices']) devices_list = devices_output.decode('utf-8').strip().split('\n')[1:] # 获取指定设备上的进程列表 device_id = devices_list[0].split('\t')[0] process_output = subprocess.check_output(['adb', '-s', device_id, 'shell', 'ps']) process_list = process_output.decode('utf-8').strip().split('\n')[1:] # 查找指定包名的进程ID package_name = 'com.example.myapp' pid = None for process in process_list: if package_name in process: pid = process.split()[1] break # 获取指定进程的CPU内存占用情况 if pid: top_output = subprocess.check_output(['adb', '-s', device_id, 'shell', 'top', '-n', '1']) top_lines = top_output.decode('utf-8').strip().split('\n') for line in top_lines: if pid in line: cpu_usage = line.split()[2] mem_usage = line.split()[6] print(f'CPU usage: {cpu_usage}, Memory usage: {mem_usage}') break ``` 注意:在运行上述代码之前,需要先将Android设备连接到电脑,并在设备上开启USB调试模式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值