Message364446
| Author | vstinner |
|---|---|
| Recipients | Mark.Shannon, eric.snow, jeremy.kloth, jkloth, larry, maciej.szulik, nanjekyejoannah, ncoghlan, phsilva, rhettinger, shihai1991, vstinner |
| Date | 2020-03-17.16:54:19 |
| SpamBayes Score | -1.0 |
| Marked as misclassified | Yes |
| Message-id | <1584464059.4.0.177957814513.issue39511@roundup.psfhosted.org> |
| In-reply-to |
| Content | |
|---|---|
Mark: > The problem with having a single immortal `None`, is that it will cause data cache thrashing as two different CPUs modify the refcount on the shared `None` object. Yeah, I concur with Mark: having one singleton per interpreter should provide better usage of the CPU caches, especially CPU data cache level 1. Mark: > Consider the case where a thread that doesn't hold the GIL attempts to get a reference on `None`. The main drawback of PR 18301 is that accessing "Py_None" means accessing tstate->interp->none. Except that the commonly used _PyThreadState_GET() returns NULL if the thread doesn't hold the GIL. One alternative would be to use PyGILState_GetThisThreadState() but this API doesn't support subinterpreters. Maybe we are moving towards a major backward incompatible changes required to make the subinterpreters implementation more efficient. Maybe CPython should have a backward compatible behavior by default (Py_None can be read without holding the GIL), but running subinterpreters in parallel would change Py_None behavior (cannot be read without holding the GIL). I don't know. |
|
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2020-03-17 16:54:19 | vstinner | set | recipients: + vstinner, rhettinger, ncoghlan, larry, jkloth, phsilva, jeremy.kloth, Mark.Shannon, eric.snow, maciej.szulik, nanjekyejoannah, shihai1991 |
| 2020-03-17 16:54:19 | vstinner | set | messageid: <1584464059.4.0.177957814513.issue39511@roundup.psfhosted.org> |
| 2020-03-17 16:54:19 | vstinner | link | issue39511 messages |
| 2020-03-17 16:54:19 | vstinner | create | |