Issue15668
Created on 2012-08-15 14:10 by Robin.Schreiber, last changed 2022-04-11 14:57 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| _random_pep3121-384_v0.patch | Robin.Schreiber, 2012-08-15 14:10 | |||
| Messages (9) | |||
|---|---|---|---|
| msg168297 - (view) | Author: Robin Schreiber (Robin.Schreiber) * ![]() |
Date: 2012-08-15 14:10 | |
Changes proposed in PEP3121 and PEP384 have now been applied to the lsprof module! |
|||
| msg168299 - (view) | Author: Raymond Hettinger (rhettinger) * ![]() |
Date: 2012-08-15 14:25 | |
Martin, does this patch match your intent with PEP3121 and PEP384? |
|||
| msg168437 - (view) | Author: Martin v. Löwis (loewis) * ![]() |
Date: 2012-08-17 08:24 | |
Sure; I've mentored Robin throughout the summer with this, and this is his GSoC project. As for the specific change: this is primarily to support PEP 3121, and allowing multiple interpreters to use a module without fear of global variables being shared across interpreters. In the current implementation, the Random type would be shared across all interpreters, with the change, each interpreter gets its own copy of the Random type. For that, the type needs to become a heap type, which is best done with the PEP 384 API (even though ABI stability is irrelevant for the random module). |
|||
| msg168514 - (view) | Author: Stefan Krah (skrah) * ![]() |
Date: 2012-08-18 14:09 | |
I tried to benchmark this patch but I'm getting a segfault: Python 3.3.0b2+ (default:dc18d73e67a5, Aug 18 2012, 15:37:04) [GCC 4.4.3] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import random Segmentation fault |
|||
| msg168516 - (view) | Author: Mark Dickinson (mark.dickinson) * ![]() |
Date: 2012-08-18 15:35 | |
The Py_tp_bases line below doesn't look right. I suspect that's what's causing the segfault.
+static PyType_Slot Random_Type_slots[] = {
+ {Py_tp_getattro, PyObject_GenericGetAttr},
+ {Py_tp_doc, random_doc},
+ {Py_tp_methods, random_methods},
+ {Py_tp_new, random_new},
+ {Py_tp_free, PyObject_Free},
+ {Py_tp_bases, },
+ {0, 0}
|
|||
| msg168518 - (view) | Author: Mark Dickinson (mark.dickinson) * ![]() |
Date: 2012-08-18 16:16 | |
With the Py_tp_bases line removed, all tests pass for me on a non-debug 64-bit build on OS X 10.6. A quick timing of random.random() showed no distinguishable performance impact. |
|||
| msg168519 - (view) | Author: Stefan Krah (skrah) * ![]() |
Date: 2012-08-18 17:13 | |
Thanks, Mark. With your change applied I can't measure any performance differences either. |
|||
| msg372079 - (view) | Author: STINNER Victor (vstinner) * ![]() |
Date: 2020-06-22 09:37 | |
The PEP 384 part was fixed by: commit 04f0bbfbedf8d2bb69b012f853de6648b1a9f27f Author: Dino Viehland <dinoviehland@fb.com> Date: Fri Sep 13 11:12:27 2019 +0100 bpo-38075: Port _randommodule.c to PEP-384 (GH-15798) - Migrate `Random_Type` to `PyType_FromSpec` - To simulate an old use of `PyLong_Type.tp_as_number->nb_absolute`, I added code to the module init function to stash `int.__abs__` for later use. Ideally we'd use `PyType_GetSlot()` instead, but it doesn't currently work for static types in CPython, and implementing it just for this case doesn't seem worth it. - Do exact check for long and dispatch to PyNumber_Absolute, use vector call when not exact. |
|||
| msg381416 - (view) | Author: STINNER Victor (vstinner) * ![]() |
Date: 2020-11-19 14:01 | |
commit cc0cd43c0f96dac413e54855e9c77ec4b73bd2f8 Author: Christian Heimes <christian@python.org> Date: Thu Nov 19 08:46:29 2020 +0100 bpo-1635741: Port _random to multiphase initialization (GH-23359) See bpo-41111 "Convert a few stdlib extensions to the limited C API". |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:57:34 | admin | set | github: 59873 |
| 2020-11-19 14:01:02 | vstinner | set | status: open -> closed superseder: Py_Finalize() doesn't clear all Python objects at exit messages: + msg381416 resolution: duplicate |
| 2020-06-22 09:37:08 | vstinner | set | nosy:
+ vstinner messages: + msg372079 |
| 2014-05-13 21:55:06 | skrah | set | nosy:
- skrah |
| 2012-11-08 13:28:16 | Robin.Schreiber | set | keywords: + pep3121, - patch |
| 2012-08-27 03:42:36 | belopolsky | link | issue15787 dependencies |
| 2012-08-18 17:13:43 | skrah | set | messages: + msg168519 |
| 2012-08-18 16:16:53 | mark.dickinson | set | messages: + msg168518 |
| 2012-08-18 15:35:40 | mark.dickinson | set | nosy:
+ mark.dickinson messages: + msg168516 |
| 2012-08-18 14:09:14 | skrah | set | nosy:
+ skrah messages: + msg168514 |
| 2012-08-17 08:24:53 | loewis | set | messages: + msg168437 |
| 2012-08-15 14:25:02 | rhettinger | set | assignee: loewis |
| 2012-08-15 14:10:36 | Robin.Schreiber | create | |

