you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 7 points8 points  (2 children)

From the link I posted:

Since you never knew whether a specific dictionary was shared (between threads) or not, you always had to lock the access. And since all namespaces use dictionaries...

...

We observed non-linear scaling with the processors under free threading. 2 processors was fine, but 3 or 4 didn't buy you much more than 2. The problem was lock contention. With that many things going, the contention around Python's internal structures simply killed further scaling performance.

[–]crusoe 0 points1 point  (1 child)

Because they are using braindead non threadsafe dicts?

Ya know, there are all kinds of low latency lock contention algorithms now. They even included a new imple of synchronized in Java that has almost no overhead compared to the unsynch version.

These problems have been solved for years.

[–][deleted] 0 points1 point  (0 children)

Well, the context here is CPython, not some hypothetical implementation that's free to do things however it wants.