On Fri, May 28, 2021 at 1:17 AM Christopher Barker <python...@gmail.com> wrote:
>>
>>
>> Statics are still hidden global state, and those can be problematic 
>> regardless of being function local or module global. Having global state 
>> like this affects testability and can affect threading as well.
>
>
> I think this is a very good point. I'm no expert, but I know a HUGE amount of 
> old C code isn't thread-safe -- and static has something to do with that?
>
> Not that people shouldn't be allowed to write non thread-safe code in Python, 
> but it shouldn't be encouraged. An awful lot of code is written with no idea 
> that it will be run in multi-threaded code later on.
>
> Personally, I can't think of any times when I would have used this -- maybe 
> because it wasn't there, so I didn't think about it.
>

Maybe, but it's worth noting that Python code has an inherent level of
thread-safety as guaranteed by the language itself; you can't, for
instance, have threads trample over each other's reference counts by
trying to incref or decref the same object at the same time.

Fundamentally, ANY form of mutable state will bring with it
considerations for multithreading. Generally, the solution is to keep
the state mutation to the tightest part possible, preferably some
atomic action (if necessary, by guarding it with a lock), and then you
have less to worry about. Hence my preference for direct manipulation
of the state, rather than snapshotting it at function start and
reapplying it at function exit.

Multithreading isn't very hard in Python, and even when you get
something wrong, it's not too difficult to figure out what happened.
It's not nearly as hard as in C, where you have more possible things
to go wrong.

ChrisA
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/VV3FGLWLJ2JEAQ3FOV73ZZ7PYKCQU5Y4/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to