Removing `@register_integration("asyncio")` and `def loop_asyncio(kernel):`
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 66/100
Direção de pesquisa
Comece por ipykernel/eventloops.py, nas proximidades do código de integração vinculado, e rastreie como ele é invocado por enter_eventloop() em kernelbase.py. Compare o comportamento com as alterações no loop de eventos do asyncio descritas no pull request 1469 e, em seguida, verifique se a execução repetida de %gui asyncio não faz mais a contagem de tarefas do asyncio crescer nem desperdiça CPU.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
In current versions of ipykernel, when you execute in jupyter, vscode jupyter,
%gui asyncio
then after a while, when you execute
import asyncio
asyncio.all_tasks()```
you will get and see like
{<Task pending name='Task-52016' coro=<_async_in_context.<locals>.run_in_context() running at D:\test\ipykernel\ipykernel\utils.py:60> wait_for=<Task pending name='Task-52017' coro=<Kernel.shell_main() running at D:\test\ipykernel\ipykernel\kernelbase.py:621> cb=[Task.task_wakeup()]> cb=[ZMQStream._run_callback.<locals>._log_error() at e:\.pixi\envs\default\Lib\site-packages\zmq\eventloop\zmqstream.py:563]>,
<Task pending name='Task-5217' coro=<Kernel.shell_main() running at D:\test\ipykernel\ipykernel\kernelbase.py:621> cb=[Task.task_wakeup()]>}
It keeps increasing task count and it wastes your some cpu resource in the background. It's acually running these below codes, it just enters the function the return repeatedly, by self.io_loop.call_later(0.001, advance_eventloop) of enter_eventloop() in kernelbase.py.
https://github.com/ipython/ipykernel/blob/8816d024bf730e9fdb051b44ab2fc1ee2276cea2/ipykernel/eventloops.py#L430-L473
How it happened:
The @register_integration("asyncio") and def loop_asyncio(kernel): was at the old ages, to drive the asyncio codes that inputed by users, like asyncio.ensure_future(...), when ipykernel was running under IOloop of tornado<6.1 which using the selectorloop or even older type eventloop. It was to make users able to run asyncio codes when the underhood is other things.
The current ipykernel its main loop is already asyncio loop, by IOloop of tornado>6.1. The user inputed asyncio codes already run in the main loop.
Therefore the related codes @register_integration("asyncio") and def loop_asyncio(kernel): could be deleted.
Solution:
related issue: https://github.com/ipython/ipykernel/pull/1469 solving the proactor and selector eventloop within asyncio
- Linguagem predominante
- Python
- Estrelas
- 734
- Forks
- 411
- Merge médio
- 1d 2h
- PRs com merge (30d)
- 9
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de ipython/ipykernel
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 68/100
-
ipython/ipykernel#1550 · 1 comentário · 1 reação · 1 responsável ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
Todas as issues de ipython/ipykernel
Issues semelhantes
-
triage/confirmed
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
agentscope-ai/agentscope#2775 ·
-
comp/desktop P3 type/bug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
NousResearch/hermes-agent#118866 ·
-
bug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100
apache/cloudstack#14222 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100