[Python] aggiungere o distruggere una locked item in un dict mentre un'altro thread o asyncio lo legge/scrive per un'altra item?

alessandro medici alexxandro.medici a gmail.com
Mar 16 Feb 2016 10:53:29 CET


L'esempio che hai fatto non è quello che intendevo io: accedi a due voci
contemporaneamente dello stesso dizionario nello stesso thread. Comunque
proverò.

In ogni caso a me risulta che Gil rilascia i thread ogni 'gruppo' di
istruzioni bytecode, non ogni singola istruzione. In altre parole
sovrascrivere una voce di un dizionario è, per quel che riguarda python,
una istruzione atomica. La cosa è evidente se cerchi di scrivere sullo
stesso terminale da ogni thread: quel che appare è un guazzabuglio confuso
ma è anche evidente dal risultato degli script che ho scritto.

O, quantomeno, la cosa funziona: mi son fatto diversi script in cui ogni
thread modifica/usa/cancella/trattiene una voce (con un lock non atomico di
controllo di accesso) in un dizionario e gli altri fanno quello che
vogliono sulle ALTRE voci con le stesse regole. Ogni voce punta ad una voce
univoca di un altro dizionario senza lock che viene cancellata/riscritta.

Funzionano perfettamente senza problemi, almeno per quella decina di
milioni di volte per cui li ho fatti girare: direi che si può benissimo
farlo anche se sono certo del reale perché.

Mah!
:-)
​
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20160216/67f3b6a6/attachment.html>


Maggiori informazioni sulla lista Python