我在我们 Android 项目里增加了一个日志输出(700ms 一次),单独运行日志过滤时没有问题,能收集 16 个左右。

但是如果放到 appium 里,同样的代码,却最多只能收集 8 个左右,而却很大概率只能收集 2~3 个,数量差距很明显。

刚开始寻找原因时,发现 appium 的日志里有好多使用了 adb,怀疑是同时使用 adb 影响了其稳定性,但是下面这种方式又可以一个不落的保存所以日志。

虽然勉强算是解决了问题,可是不知道哪里出的问题,也不知道怎么查。。。。
@seveniruby 不好意思打扰了,受累给一下查找问题的方向也行,谢谢。
这是代码,想试验可以复制:

import os
from multiprocessing.dummy import Pool as ThreadPool
import time
import signal


def ur(a):
    if a == 1:
        print time.ctime()
        try:
            time.sleep(12)
            pidd = os.getpid()
            os.kill(pid=pidd, sig=signal.SIGKILL)
        except Exception, e:
            print e
            int('adsadsads')
    elif a == 2:
        print time.ctime()
        aa = list([])
        while 1:
            bb = os.popen("adb shell logcat -t 1 |grep dropped:").readlines()
            if len(bb) > 0:
                if len(aa) > 0:
                    if bb[0] != aa[-1]:
                        aa += bb
                        print len(aa)
                else:
                    aa += bb
                    print len(aa)


pool = ThreadPool(4)
lists = list([1, 2])
pool.map(ur, lists)
pool.close()
pool.join()


↙↙↙阅读原文可查看相关链接,并与作者交流