在pyoide中手动跟踪函数而不锁定主线程



我正在尝试为Python构建一个基于浏览器的调试工具,但我在将Python内部工作与用户交互相结合时遇到了麻烦。我的设置看起来像这样。本质上,我使用sys.settrace一次检查一个操作码的函数。我的目标是让用户能够通过按下Step按钮来手动推进每个指令。

我遇到的问题是,跟踪函数不能是异步的,因为Python不喜欢异步,如果它是同步的,就没有真正的方法来停止并等待输入/交互。如果我只创建一个无限while循环,它会冻结浏览器的主线程,使页面变得无响应。

有没有人对我如何构建这允许UI和跟踪函数之间的交互有建议?

我设法找到了一个基于service worker的解决方案。我从这里使用了一个示例实现。它利用了一个事实,你可以让一个同步线程等待一个HTTP请求,所以我们使用service worker拦截这个请求,让它持续我们需要的时间,当我们完成后,我们甚至可以把数据和请求一起发回。

最新更新