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进程的正常执行。

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


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android下获取设备唯一标识(UDID, DeviceID)

android下获取设备唯一标识原本非常简单(至少不会像iOS一样禁用这个,禁用那个),但是由于设备的多样性需要考虑的东西也对应复杂起来。 先附上完整代码

python读取电脑硬件信息

上学那会,老师让我用java获取电脑硬件信息,CPU, 硬盘,MAC等,那个时候感觉搞了好久。。。。。。     今天,用python试了一下,简单多了。分享一下: 首先安装wmi库,wmi是一种...
  • SHW800
  • SHW800
  • 2015-06-10 11:33
  • 1557

转载:linux系统下 python获取 内存、cpu、负载、网络流量、硬盘等信息

转载:http://blog.csdn.net/chenyulancn/article/details/7995471 内存信息 / meminfo  返回dict   #!/usr/bi...

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

import os,subprocess import re def getAndroidVersion(): #获取系统设备系统信息 sysInfo= subprocess.che...

[从零开始系列]AndroidApp研发之路-<楼外篇>Retrofit的刨根问底篇

文章目录: 前言 概要 Retrofit类概要 流程梳理 关于我 参考 前言写在前面**Flyabbit是一个使用Retrofit+Rxjava2+dagger2+Mvp+Material Desi...

《Android-查看手机内CPU手机型号设备信息等以及adb常用命令》---记录几个命令

查看设备信息build.prop里面还有好多其他的信息root@dior:/data # cat /system/build.prop | grep "product" cat /system/bui...

android 常用adb 和 adb shell 命令

Android Debug Bridge ADB常用命令: 1. 查看设备    adb  devices   这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟...

ADB Shell学习

ADB Shell 学习 又是一个周末了,最怕闲来无事的周末,于是给自己找点事情做,ADB shell这一块一直没有系统的学习,正好趁此机会学习。 主要通过学习资料和adb –help文档学习怎么...

Android开发中adb命令的常用方法

Android的SDK中提供了很多有用的工具,在开发过程中如果能熟练使用这些工具,会让我们的开发事半功倍.adb是SDK提供的一个常用的命令行工具,全称为Android Debug Bridge,用于...

Android 模拟键盘鼠标事件(Socket+Instrumentation实现)

通过Socket + Instrumentation实现模拟键盘鼠标事件主要通过以下三个部分组成:   *   Socket编程:实现PC和Emulator通讯,并进行循环监听   *  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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