A while ago I chose to use a deque that is shared between two threads. I did so 
because the docs say:

"Deques support thread-safe, memory efficient appends and pops from either side 
of the deque with approximately the same O(1) performance in either direction.”

(https://docs.python.org/3.11/library/collections.html?highlight=deque#collections.deque)

Earlier today, looking through some server logs I noticed that from time to I’m 
getting a

RuntimeError: deque mutated during iteration

I guess this surprised me. When I see “thread safe”, I don’t expect to get 
errors.

Interestingly the error also only started showing up when I switched from 
running a statistics.mean() on one of these, instead of what I had been using, 
a statistics.median(). Apparently the kind of iteration done in a mean, is more 
conflict prone than a median?

I’ve got a couple ways I can work around this. But I was surprised.
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to