通过 Python 子进程运行时使用仪器获取 iDevices 卡住了
Posted
技术标签:
【中文标题】通过 Python 子进程运行时使用仪器获取 iDevices 卡住了【英文标题】:Getting iDevices using instruments got stuck when running through Python subprocess 【发布时间】:2016-09-05 12:40:27 【问题描述】:我正在编写一个简单的 python 脚本,使用 Subprocess 将 iDevices 列表附加到我的 mac。我使用的命令是“instruments -s devices”。当我通过命令行运行时,此命令工作正常,但是当我使用子进程使用相同的命令时遇到问题。
下面是我的简单python脚本
import subprocess
cmd = ['instruments', '-s', 'devices']
response = subprocess.Popen(cmd,stdout=subprocess.PIPE)
print response.communicate()
当我运行上面的 python 命令时,我的终端屏幕如下所示
MacBook-Pro-9:lib darren$ python iosRemoteLib.py
2016-09-05 14:30:38.648 instruments[21276:1052546] WebKit Threading Violation - initial use of WebKit from a secondary thread.
python 进程挂起并且没有返回任何响应。看起来像一些线程问题,我无法弄清楚是什么。
谢谢
【问题讨论】:
【参考方案1】:你有两个版本的 Xcode 吗? 我面临子进程(仪器 -s 设备)挂起的完全相同的问题。我有 XCode 8.0 和 7.3.1。此问题仅在我切换到 7.3.1 后发生。事实证明 subprocess.Popen('sudo instruments -s devices', stdout=subprocess.PIPE) 工作得很好。所以可能是权限问题。
【讨论】:
以上是关于通过 Python 子进程运行时使用仪器获取 iDevices 卡住了的主要内容,如果未能解决你的问题,请参考以下文章