-
-
Notifications
You must be signed in to change notification settings - Fork 32k
gh-121464: Make concurrent iteration over enumerate safe under free-threading #125734
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
Merged
Merged
Changes from all commits
Commits
Show all changes
22 commits
Select commit
Hold shift + click to select a range
609ce86
Make concurrent iteration over enumerate safe under free-threading
eendebakpt 7cbc12a
📜🤖 Added by blurb_it.
blurb-it[bot] 3902f3b
fix news entry
eendebakpt ce2315c
relax test
eendebakpt e42f74f
relax test
eendebakpt 079e6ab
fix exit of critical section
eendebakpt 0d6ce83
Merge branch 'main' into enumerate_ft_v4
eendebakpt 0dd6cd8
format news entry
eendebakpt d861c35
apply review suggestions
eendebakpt b3eff15
Merge branch 'main' into enumerate_ft_v4
eendebakpt 167d606
refactor to avoid returning from within a critical section
eendebakpt 23c575d
make sure all threads start iterating at the same moment in the test
eendebakpt 7450a34
remove debug statement
eendebakpt c12cfa5
Merge branch 'main' into enumerate_ft_v4
eendebakpt 98fb828
Merge branch 'main' into enumerate_ft_v4
eendebakpt 8dd0701
Update Objects/enumobject.c
eendebakpt a90d5e8
review suggestions
eendebakpt 9b40039
fix test
eendebakpt d052d2c
Merge branch 'main' into enumerate_ft_v4
eendebakpt 87cbd42
cleanup test
eendebakpt d4e5779
Merge branch 'main' into enumerate_ft_v4
eendebakpt 2af6ce9
refactor test
eendebakpt File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
import unittest | ||
import sys | ||
from threading import Thread, Barrier | ||
|
||
from test.support import threading_helper | ||
|
||
threading_helper.requires_working_threading(module=True) | ||
|
||
class EnumerateThreading(unittest.TestCase): | ||
|
||
@threading_helper.reap_threads | ||
def test_threading(self): | ||
number_of_threads = 10 | ||
number_of_iterations = 8 | ||
n = 100 | ||
start = sys.maxsize - 40 | ||
barrier = Barrier(number_of_threads) | ||
def work(enum): | ||
barrier.wait() | ||
while True: | ||
try: | ||
_ = next(enum) | ||
except StopIteration: | ||
break | ||
|
||
for it in range(number_of_iterations): | ||
enum = enumerate(tuple(range(start, start + n))) | ||
worker_threads = [] | ||
for ii in range(number_of_threads): | ||
worker_threads.append( | ||
Thread(target=work, args=[enum])) | ||
with threading_helper.start_threads(worker_threads): | ||
pass | ||
|
||
barrier.reset() | ||
|
||
if __name__ == "__main__": | ||
unittest.main() |
1 change: 1 addition & 0 deletions
1
Misc/NEWS.d/next/Core_and_Builtins/2024-10-19-20-22-19.gh-issue-121464.IHwfpK.rst
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Make concurrent iterations over the same :func:`enumerate` iterator safe under free-threading. See `Strategy for Iterators in Free Threading <https://github.com/python/cpython/issues/124397>`_. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.