ipython / ipython/ipykernel

Understanding integration of other eventloops

未關閉
#532 0 則留言 3 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
Python
星號
734
分支
412
平均合併
1 天 5 小時
30 天內合併 PR
8

描述

Hey I have some questions,

I integrated the qt eventloop using %gui qt and I noticed a small delay in my qt application every time I pass code to the kernel. I investigated the issue and noticed that although the qt eventloop passes to the kernel eventloop, it quits the qt app and somehow calls `loop_qt5` again to reintegrates the qt eventloop. This takes roughly a second which is bummer.

So I have rewritten the integration using `kernel.do_one_iteration`. My current fork has no delay and seems to work, but I want to understand why (this is not the standard way)?

Does my code may break some functionalities as I replaced `yield gen.sleep(self.stop_on_error_timeout)` with `time.sleep(self.stop_on_error_timeout)`? But otherwise the kernel can not recover from an exception, as `self._aborting = False` will never be called (because the kernel eventloop does not run).

My Commit:
https://github.com/ugogon/ipykernel/commit/4f29274bf368ffa5a5124aa5bc6995810904344c

Maybe you can give me some insights of the ipython eventloop structure.

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。