La lettura è thread-safe, nessun problema ..... fino a quando qualcosa non scrive nella posizione da cui si sta leggendo, e poi ... beh, si spera che legga prima che i dati siano stati cambiati, o letti dopo il i dati sono stati modificati (in questi casi non ci sono preoccupazioni), ma a volte, proprio quando non lo vuoi davvero, leggerai a metà della scrittura e poi otterrai dati inutili.
Il modo per mitigare questo è quello di assicurarsi di leggere solo prima o dopo qualsiasi scrittura, il che richiede di controllare che si stia verificando una scrittura e utilizzare quindi un blocco di sincronizzazione di qualche tipo. Questo rende le cose più lente, dato che ovviamente stai controllando il blocco e poi leggendo invece di leggere. Se si sta lavorando con tipi di dati primitivi (ad esempio un int), è possibile utilizzare una sincronizzazione della CPU per accelerare notevolmente questa situazione.
Come per Python, è probabile che i dati python siano sempre sincronizzati per te dal runtime della lingua, se non lo è allora avrai gli stessi problemi di lettura del thread prima o poi. (Google veloce dice sì, Python will suffer the same problems non stai attento)
Mi raccomando di leggere http: //en.wikipedia.org/wiki/Lettori-writers_problem –