Windows下如何获取与手机设备有关的进程信息(Python版)

原创 2016年06月02日 11:07:46

        当电脑上插有多台手机,我们对手机进行自动化测试,必然会执行adb  shell命令,有时代码不能很好的对adb进程进行回收,导致电脑上会残留大量的adb进程,每个adb进程都会占用电脑少量内存,adb数量多的时候,占用的内存也是惊人的,会导致电脑响应速度变慢等问题。因此,我们需要定期将电脑上的adb进程给杀死掉。


        现在我们面临一个问题,如何杀死一台手机的adb命令而不影响另外一台手机的adb shell命令的正常执行呢?一台机器我们可以执行如下代码:

os.system('taskkill /IM adb.exe /F')
        这行代码会杀死所有的adb进程。如果是多台手机设备,会对其他的机器产生影响。我们在任务管理器里面对进程选择管理行,那样我们就能看到adb进程详细的信息,如下图所示:


        那么,我们有没有办法获取这些adb进程详细信息呢?答案是肯定的。可以通过psutil这个模块来搞定。在Python代码中,我们使用import psutil即可。但是导入这个模块时,我们必须安装该模块,我使用的是psutil-3.4.2.win32-py3.3.exe,这个应用程序名字比较特别,但又充分显示其信息。psutil-3.4.2表明psutil的版本为3.4.2,在Windows 32位环境下使用,相应的Python应用程序版本为3.3,不然使用的时候会出错,这个就不再详细说明。

        话不多说,我们直接贴代码:

def killDevicePid(device):
    filterstr1='adb'
    filterstr2=device
    for proc in psutil.process_iter():
        try:
            pinfo = proc.as_dict(attrs=['pid', 'name'])
            pid = pinfo['pid']
            if ((filterstr1 in proc.cmdline()) and (filterstr2 in proc.cmdline())):
                # print(filterstr)
                killcmd = 'taskkill /PID ' + str(pid) + ' /F'
                try:
                    os.system(killcmd)
                    print(killcmd)
                except OSError as e:
                    print('no process.')
        except psutil.NoSuchProcess:
            pass
        except ProcessLookupError:
            pass
        except psutil.AccessDenied:
            pass
        finally:
            del pinfo
            del proc 
        其中,device为机器的设备号,我们根据设备号来杀死相应机器的所有adb进程。psutil.process_iter()这个是获取到电脑上所有进程信息,然后对其进程遍历,得到各个进程的pid和name。proc.cmdline()为进程的命令行信息,如上图所示,我们可以判断该命令行信息是否含有机器设备号和adb进程,如果都含有的话,我们可以通过taskkill命令和adb进程的pid来杀死adb进程。这样,我们就能对某一台设备的adb进程进行kill,而不影响其他设备的adb shell进程的正常执行。

        目前为止,我讲完了,今后大家如果想获取与设备进程相关的信息,或者想对进程进程控制,都可以使用该文的相关方法。


Appium自动获取 Android 设备 id 和包名等信息(python)

使用 Appium,每次换设备换 APP 测试时要在脚本修改很多东西,很麻烦,要自动获取可以通过指令获得的信息,使用该起来也方便。 最终效果是每次只需要修改测试的包的路径和包名就可以自动删除...
  • zhusongziye
  • zhusongziye
  • 2017年09月05日 21:01
  • 669

python获取android手机信息

adb下载:https://pan.baidu.com/s/1miBZJjq 使用脚本前请先将adb.exe文件加入到计算机的环境变量path里面,或者复制到和脚本的同一目录下,手机连接到电脑时请打...
  • CosmopolitanMe
  • CosmopolitanMe
  • 2018年01月06日 00:04
  • 455

python与adb结合自动获取设备名和安卓版本号操作源码

import os,subprocess import re def getAndroidVersion(): #获取系统设备系统信息 sysInfo= subprocess.che...
  • henni_719
  • henni_719
  • 2017年03月27日 08:48
  • 2383

python serial 获取所有的串口名称

#!/usr/bin/env python # -*- coding: utf-8 -* import serial import serial.tools.list_ports ...
  • qq61394323
  • qq61394323
  • 2015年03月25日 11:35
  • 11234

Python用WMI模块获取Windows系统的硬件信息

Python用WMI模块获取Windows系统的硬件信息:硬盘分区、使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息。 本文实例讲述了python使用wmi模块获取...
  • xy2953396112
  • xy2953396112
  • 2017年01月18日 11:29
  • 1173

Python管理Windows进程

Python管理Windows进程
  • esonbest1234
  • esonbest1234
  • 2016年12月31日 21:44
  • 2927

Python 编写windows守护进程程序

一、简介 项目中使用python写一个监控程序,每隔5秒监控目录,发现文件就立刻FTP同步到另一台服务器。业务要求高实时性和高可用性。为了谨防程序崩溃,特别编写一个守护进程程序,时刻监控程序是否崩溃并...
  • alex_bean
  • alex_bean
  • 2017年09月10日 17:49
  • 1048

Python 检测 杀掉 指定 windows 进程

例:检测 "sogou-gui.exe" 的进程
  • iloveshenyun
  • iloveshenyun
  • 2014年04月06日 20:33
  • 1366

windows下Python使用多进程的问题

最近在学习爬虫,对于线程、进程、多线程、多进程、协程研究了很多。因为我用的是WIN7,所以一切都是在win下实现的。 在WIN下使用多进程的包multiprocessing(这是第三方包,不是模块),...
  • grs294845170
  • grs294845170
  • 2017年05月08日 09:31
  • 1692

使用Python实现获取设备名及地址

使用python实现: 1. 查询本机设备名及IP地址 2. 查询远程设备名及IP地址
  • sanghu
  • sanghu
  • 2017年06月04日 22:19
  • 470
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows下如何获取与手机设备有关的进程信息(Python版)
举报原因:
原因补充:

(最多只允许输入30个字)