Il problema non sono i dati, ma l'esecuzione: l'interprete Python quando sta "macinando" il codice intermedio tiene occupato il GIL, che impedisce di passare ad un altro thread.Originariamente inviato da Scara95
Smentiscimi se sbaglio, che non ne sono sicuro: se devo lavorare su dati indipendenti su thread indipendenti in Lua uso due stati diversi, uno per thread C, in CPython non c'é alcun modo...
Se però richiami funzioni esterne, queste possono rilasciare il GIL mentre vanno (a patto ovviamente che altri thread non gli cambino i dati di nascosto) e consentire così un certo grado di parallelismo. Ad esempio, nel codice che sto scrivendo il grosso del lavoro è fatto in un'estensione scritta in C++ (con binding SIP), e all'ingresso della chiamata C++ viene rilasciato il GIL; in questa maniera posso eseguire in thread diversi il mio codice C++ senza che nulla rimanga bloccato.