This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
标题: asyncio with two interpreter instances
类型: behavior Stage:
Components: asyncio Versions:
process
状态: open Resolution:
Dependencies: 后续:
分配给: 抄送列表: asvetlov, eric.snow, mbadaire, yselivanov
优先级: normal 关键字:

mbadaire2022-04-04 19:57 创建。最近一次由 admin2022-04-11 14:59 修改。

Messages (1)
msg416694 - (view) Author: Matthias Badaire (mbadaire) 日期: 2022-04-04 19:57
Hi,
I have an issue when using asyncio and two interpreter instances each launched and used in a seperated thread. 
I am getting a asyncio loop for each thread .However asyncio is getting me the same loop because of this code in get_running_loop. Indeed when I have two interpreter, the ts_id would be the same for both my threads and therefore I will get the cached value of the first thread. cached_running_holder being static, it is the same value for all instances of interpreter.
Maybe we should check if we are in the same interpreter or same thread ,.. I am not sure how it could be fixed. 

_asynciomodule.c:
get_running_loop(PyObject **loop)
{
    PyObject *rl;

    PyThreadState *ts = _PyThreadState_GET();
    uint64_t ts_id = PyThreadState_GetID(ts);
    if (ts_id == cached_running_holder_tsid && cached_running_holder != NULL) {

If it does not make sense, I have some sample code but it is not just 10 lines.
历史
日期 用户 动作 参数
2022-04-11 14:59:58admin修改github: 91375
2022-04-04 20:38:00JelleZijlstra修改抄送: + eric.snow
2022-04-04 19:57:08mbadaire创建