ipython / ipython/ipykernel

ipykernel should use default `WindowsProactorEventLoopPolicy` rather than `WindowsSelectorEventLoopPolicy` for windows

オープン
#1,468 コメント 1 件 リアクション 3 件 担当者 0 名 GitHub で見る
主要言語
Python
スター
734
フォーク
412
平均マージ
1日 5時間
マージ済み PR(30日)
8

説明

there were some issues discussed about this problem before https://github.com/ipython/ipykernel/pull/1184,
then https://github.com/ipython/ipykernel/issues/1190 caused https://github.com/ipython/ipykernel/pull/1194 reverted the above PR.
I tried the https://github.com/ipython/ipykernel/issues/1190 but it's unable to reproduce now in ipykernel version 7.1.

the `asyncio` on windows needs `WindowsProactorEventLoopPolicy` to have the ability to use `create_subprocess_exec`, which is used in practice places, for example:
* using playwright which is a new automation tools after selenium.
```py
import asyncio
from playwright.async_api import async_playwright

async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("https://playwright.dev")
print(await page.title())
await browser.close()

await main()
# asyncio.run(main())
```
         on windows, the above codes is not useable in ipython, junpyter, or jupyter notebook in vscode because of `WindowsSelectorEventLoopPolicy` lacking of `create_subprocess_exec`

* a another use case like a issue in this repo https://github.com/ipython/ipykernel/issues/391, this PR using default event loop `WindowsProactorEventLoopPolicy` can also close this issue.

Even If the above https://github.com/ipython/ipykernel/issues/1190 is still reproduceable, then should fix it, to make asyncio `create_subprocess_exec` is working on windows in jupyter.

therefore I created a PR again to get rid of using WindowsSelectorEventLoopPolicy on windows, since https://github.com/ipython/ipykernel/releases/tag/v7.0.0 dropped support for python 3.9, so the PR is simply removing the whole block code of the `init()` that checked python version

ps.
there is a old issue before https://github.com/ipython/ipykernel/pull/1184 which talked about that tornado 6.1 used background threads and which may reduce performance, but result of running test in https://github.com/ipython/ipykernel/pull/1184 showed performance improved rather than reduced. and that asyncio on windows has ability to use a common api create_subprocess_exec should be more important than threads in background problem

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。