[Python-Dev] RE: The Python interpreter is not fully thread-safe.

Tim Peters tim.one@comcast.net
2003年6月09日 16:29:10 -0400


[Michael Chermside]
> Please note that what was confusing the the original poster was
> almost certainly the docs saying that "Python" was not thread-safe
> when what was really intended was, as Tim points out, that Python's
> C api was not thread safe. Using the term "free threading" is fine,
> but also make it clear that it's the _C api_ we're talking about,
> because Python itself (ie, programs coded in pure Python) _IS_
> threadsafe.

Not really, under most meanings of "thread safe". For example,
"""
id = 0
def getid():
 global id
 id += 1
 return id
"""
wouldn't be considered a thread-safe way to get an id by most people, but
"""
getid = iter(xrange(1, sys.maxint)).next
"""
would be. Thread safety is a complicated topic, in large part because
whether a chunk of code *is* "thread safe" can't be determined by staring at
it in isolation -- it can only be judged with respect to the specific
invariants a specific app relies on. The first version of getid() may in
fact be fine for a threaded app with unusually weak requirements.
That's why I'd rather explain the situation than try to reduce it to
buzzword compliance -- the buzzwords here don't have objective,
app-independent, universally accepted meanings.

AltStyle によって変換されたページ (->オリジナル) /