-
-
Notifications
You must be signed in to change notification settings - Fork 30.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gh-109595: Add -Xcpu_count=<n> cmdline for container users #109667
Conversation
cc @indygreg |
Please read the issue of why this flag is needed and see also actual use-case from #109595 (comment) Even if the container system is important these days, there is no way to limit CPU resources for the container environment from Python program side. |
Co-authored-by: Victor Stinner <vstinner@python.org>
Co-authored-by: Victor Stinner <vstinner@python.org>
Programs/_testembed.c
Outdated
@@ -715,6 +715,7 @@ static int test_init_from_config(void) | |||
|
|||
putenv("PYTHONINTMAXSTRDIGITS=6666"); | |||
config.int_max_str_digits = 31337; | |||
config.cpu_count = -1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you please set a more interesting value like 1234?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you please document the change in Doc/whatsnew/3.13.rst?
Doc/using/cmdline.rst
Outdated
* :samp:`-X cpu_count={n}` will override the number of CPU count from system. | ||
If this option is provided, :func:`os.cpu_count` will return the overrided value. | ||
And *n* must be greater equal then 1. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* :samp:`-X cpu_count={n}` will override the number of CPU count from system. | |
If this option is provided, :func:`os.cpu_count` will return the overrided value. | |
And *n* must be greater equal then 1. | |
* :samp:`-X cpu_count={n}` overrides the number of CPU count from system: | |
:func:`os.cpu_count` returns *n*. The value *n* must be greater than | |
or equal to 1. |
Misc/NEWS.d/next/Core and Builtins/2023-09-22-01-44-53.gh-issue-109595.fVINgD.rst
Outdated
Show resolved
Hide resolved
Python/initconfig.c
Outdated
static PyStatus | ||
config_init_cpu_count(PyConfig *config) | ||
{ | ||
int cpu_count = -1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can move the variable declaration inside the "if (sep)" block. Does it have to be initialized?
If you are afraid of undefined behavior, maybe config_wstr_to_int() should set *result
to 0 on error.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now I added PYTHONCPUCOUNT
envvar, so the current structure will be needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you want, you can move the variable declaration inside each "if (env)" block and duplicate the variable, to better show its scope. But well, that's just a personal preference. Feel free to ignore my coding style remark ;-)
Co-authored-by: Victor Stinner <vstinner@python.org>
Co-authored-by: Victor Stinner <vstinner@python.org>
I'm fine with os._get_cpu_count_config() returning a string. For the env var, apparently, using an underscore or not became a hot debate: see https://discuss.python.org/t/change-environment-variable-style/35180 discussion. Maybe we should wait a few days until the dust settle down to see if a consensus is reached? Python 3.13.0 alpha 1 is scheduled for Tuesday, 2023-10-17, we will have time. Also, it may wait for alpha 2 ;-) |
Adds PYTHON_CPU_COUNT help text. Mentions multiprocessing.cpu_count. rewords a few statements.
The majority wants PYTHON_CPU_COUNT env name: https://discuss.python.org/t/change-environment-variable-style/35180 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. I see that you addressed the two @gpshead's comments. You can merge.
Congrats. |
🎉 thanks everybody! |
Follow-up: issue #110649 to add -X cpu_count=process. |
…hon#109667) --------- Co-authored-by: Victor Stinner <vstinner@python.org> Co-authored-by: Gregory P. Smith [Google LLC] <greg@krypto.org>
📚 Documentation preview 📚: https://cpython-previews--109667.org.readthedocs.build/