7

The CPython implementation seems to have the same modules written both in C (e.g., datetime in .c) and also in .py for the same module (e.g., datetime in .py).

My question is which version is used when I use datetime in my .py file when using the CPython interpreter? And why are there two module versions in the first place?

Alexander
5,1951 gold badge24 silver badges28 bronze badges
asked May 13, 2022 at 13:14
4

2 Answers 2

3

When there are two modules in the standard lib with the same name, what often has happened is that the original module was written in Python. That's because it is a lot easier to prototype and get it working quickly than in lower-level languages.

Later, once a reasonable design has been found and bugs fixed etc, performance may become a focus. It's a good time to write the slow parts in Cython or the C API and speed them up through compilation to machine code. Typically the additions are placed in a _module.so or DLL and imported from within the original module.py.

This avoids the work of prototyping/writing the entire thing in the C API, which is quite tedious.

answered May 23, 2022 at 22:33
3

C code is real code, python is interface code.

The c code is the performant code, while the python is for python runtime to correctly handle call sites.

Also use the c code Version to get the most performance.

answered May 15, 2022 at 14:59

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.