CPython notes

Description
Author: @backinblacknext
We recommend to visit

Шо та.

Last updated 3 months, 3 weeks ago

Last updated 2 months ago

twitch: https://twitch.tv/steel
youtube: https://m.youtube.com/channel/UC-o_cRtKA9IIkYBpceKU8ZA
vk: https://vk.com/topsem
inst: https://instagram.com/topsem

Last updated 2 months ago

1 month, 4 weeks ago
2 months, 2 weeks ago
**В asyncio добавили возможность смотреть граф …

В asyncio добавили возможность смотреть граф вызова корутин

Ждем в python3.14: https://github.com/python/cpython/commit/188598851d5cf475fa57b4ec21c0e88ce9316ff0

Пример:

```

import asyncio

async def test():
asyncio.print_call_graph()

async def main():
async with asyncio.TaskGroup() as g:
g.create_task(test(), name=test.__name__)

asyncio.run(main())

```

Выведет:

```

  • Task(name='test', id=0x10304eee0)
  • Call stack:
    | File '/Users/sobolev/Desktop/cpython2/Lib/asyncio/graph.py', line 278, in print_call_graph()
    | File '/Users/sobolev/Desktop/cpython2/ex.py', line 4, in async test()
  • Awaited by:
    • Task(name='Task-1', id=0x1034a1e60)
    • Call stack:
      | File '/Users/sobolev/Desktop/cpython2/Lib/asyncio/taskgroups.py', line 121, in async TaskGroup._aexit()
      | File '/Users/sobolev/Desktop/cpython2/Lib/asyncio/taskgroups.py', line 72, in async TaskGroup.__aexit__()
      | File '/Users/sobolev/Desktop/cpython2/ex.py', line 7, in async main()

```

Как оно работает?

Появилось два новых важных изменений:

- Поле Frame.f_generator – оно хранит генератор или корутину, которая владеет данным фреймом. Нужно чтобы отрисовывать + Call stack:
- Новое свойство у Future

```

@property def \_asyncio\_awaited\_by(self): if self.\_\_asyncio\_awaited\_by is None: return None return frozenset(self.\_\_asyncio\_awaited\_by)

```

Нужно, чтобы отрисовывать + Awaited by:.

Конечно же есть две иплементации. На питоне уже показал, вот так оно на C:

```

/[clinic input]
@critical_section
@getter
_asyncio.Future._asyncio_awaited_by
[clinic start generated code]
/

static PyObject
_asyncio_Future__asyncio_awaited_by_get_impl(FutureObj
self)
/[clinic end generated code: output=... input=...]/
{
/ Implementation of a Python getter. /
if (self->fut_awaited_by == NULL) {
Py_RETURN_NONE;
}
if (self->fut_awaited_by_is_set) {
/ Already a set, just wrap it into a frozen set and return. /
assert(PySet_CheckExact(self->fut_awaited_by));
return PyFrozenSet_New(self->fut_awaited_by);
}

PyObject *set = PyFrozenSet\_New(NULL); if (set == NULL) { return NULL; } if (PySet\_Add(set, self\->fut\_awaited\_by)) { Py\_DECREF(set); return NULL; } return set;

}

```

Как использовать?

Конечно же данная фича умеет не только печатать объекты в stdout. Прежде всего – она предоставляет удобное АПИ для различных IDE и дебагеров, которые смогут использовать данную информацию для визуализации: чего вообще у вас там происходит.

Ну и мониторинги, и sentry, и много кто еще получит дополнительную мета-информацию о процессе выполнения кода.

Документация: https://docs.python.org/3.14/library/asyncio-graph.html

Круто?

| Поддержать | YouTube | GitHub | Чат |

3 months ago
***😁***

https://github.com/faster-cpython/ideas/issues/642#issuecomment-2571712347
😁

Тир 1 интерпретатор с tail calls быстрее чем джит :)

3 months, 3 weeks ago
Более никаких asyncio policy.

https://github.com/python/cpython/issues/127949
Более никаких asyncio policy.

4 months, 3 weeks ago

PhD thesis о конструировании высокопроизводительных виртуальных машин для динамических языков.
Я с некоторой долей вероятности уверен что текущие оптимизации в CPython в какой-то мере основаны на этой работе. Ее автор кстати участник faster-cpython команды :)

https://theses.gla.ac.uk/2975/1/2011shannonphd.pdf

За ссылку спасибо @mikhail_efimov!

5 months ago
6 months ago
Вместе с этим, 3.8 более не …

Вместе с этим, 3.8 более не поддерживается:
https://discuss.python.org/t/python-3-8-is-now-officially-eol/66983

6 months ago

Релизнулся питон 3.13!
Скачать можно тут: https://www.python.org/downloads/release/python-3130/
Что нового: https://docs.python.org/3.13/whatsnew/3.13.html

We recommend to visit

Шо та.

Last updated 3 months, 3 weeks ago

Last updated 2 months ago

twitch: https://twitch.tv/steel
youtube: https://m.youtube.com/channel/UC-o_cRtKA9IIkYBpceKU8ZA
vk: https://vk.com/topsem
inst: https://instagram.com/topsem

Last updated 2 months ago