我希望在我操作应用程序时记录应用程序(eg.com.clov4r.android.nil)CPU占用率(例如,猴子测试)并在我使用应用程序时完成录制(例如,完成猴子测试)。如何用python实现它?
一些代码:
packagename = 'com.clov4r.android.nil'
cmd1 = 'adb shell top -d 5 | grep com.clov4r.android.nil'
cmd2 = 'adb shell monkey -v -p com.clov4r.android.nil --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes -s 2345 100'
t1 = threading.Thread(target=subprocess.call(cmd1, stdout=open(r'123.txt', 'w')))
t2 = threading.Thread(target=subprocess.call(cmd2))
答案 0 :(得分:0)
您可以使用Thread.join():
import threading, time
def worker():
time.sleep(5)
t = threading.Thread(target=worker)
t.start()
t.join()
print('finished')
答案 1 :(得分:0)
事件是线程之间通信的好方法(http://docs.python.org/2/library/threading.html#event-objects)。但是,您将遇到的另一个问题是top命令基本上会永远运行。我会做这样的事情:
def run_top(event, top_cmd):
s = subprocess.Popen(top_cmd, stdout=open('123.txt', 'w'))
event.wait() # Wait until event is set, then kill subprocess
s.kill()
def run_monkey(event, monkey_cmd):
subprocess.call(monkey_cmd)
event.set() # Once we're finished set the event to tell the other thread to exit
event = threading.Event()
threading.Thread(target=run_top, args=(event, your_top_command)).start()
threading.Thread(target=run_monkey, args=(event, your_monkey_command)).start()
可能还有一种方法可以杀死线程,但这很难看,这种方式更受控制。
我还想说run_monkey()不需要在一个线程中运行,但不确定你可能需要的其他代码。