New event loop integration system
还没有人认领这个 Issue。
评估
调研方向
Issue 中没有指出任何仓库文件或测试。先阅读提议的入口点 start_guest_run,以及 asyncio、tkinter 和 Qt 的主机循环回调示例;在实现之前,明确要涵盖哪个集成 API 以及哪些受支持的事件循环。完成的标准是达成一致的设计,并实现可工作的 guest 模式集成。
由索引模型根据 Issue 内容生成。
描述
I would like to change our event-loop integration with Trio's guest mode. Trio's guest mode also works on asyncio thanks to aioguest. For it to work, we just need to have a function that can schedule a callback in the host event-loop in a thread-safe way.
- in asyncio, that would be
loop.call_soon_threadsafe(callback), - in tkinter, that would be
tk.after(0, callback). - Qt supports Trio's guest mode, see here.
- ...
For instance, here is how it looks like when the host event-loop is tkinter's:
from tkinter import Tk
from anyio import sleep
from anyioutils import start_guest_run
def run_sync_soon_threadsafe(fn):
tk.after(0, fn)
def done_callback(outcome):
print("done")
async def foo():
for i in range(10):
await sleep(0.1)
print(i)
tk = Tk()
start_guest_run(foo, run_sync_soon_threadsafe=run_sync_soon_threadsafe, done_callback=done_callback)
tk.mainloop()
Before calling tk.mainloop(), we call start_guest_run() which runs foo as a task in tkinter's event-loop.
Thoughts?
- 主要语言
- Python
- 星标
- 734
- 派生
- 411
- 平均合并
- 1 天 2 小时
- 30 天内合并 PR
- 9
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
ipython/ipykernel 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 1/5 1 小时以内 新手友好度 72/100
-
难度 4/5 3-5 天 新手友好度 48/100
-
难度 4/5 3-5 天 新手友好度 68/100
查看 ipython/ipykernel 的全部 Issue
相似的 Issue
-
essnmx good first issue
难度 1/5 1 小时以内 新手友好度 95/100
-
难度 2/5 1-3 小时 新手友好度 65/100
syfoud/Simulated_Scepter#174 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
Giskard-AI/giskard-oss#2840 · 1 条评论 ·
-
A claim comment carrying the issue number is silently declined while the workflow reports success 未关闭area: repo bug perceived difficulty: 2
难度 2/5 1-3 小时 新手友好度 70/100
-
难度 2/5 1-3 小时 新手友好度 75/100
yeti-platform/yeti#1380 ·