Stackless pitone e multipolari?
-
22-08-2019 - |
Domanda
Quindi, sto giocando intorno con Stackless Python e una domanda spuntato nella mia testa, forse questo è "dato per scontato" o conoscenza "comune", ma non sono riuscito a trovare in realtà scritto da nessuna parte sul sito stackless .
La Stackless Python sfruttare le CPU multicore? In normali Python avete la GIL essere costantemente presente e di fare (vero) l'utilizzo di più core è necessario utilizzare diversi processi, è vero per Stackless anche?
Soluzione
Stackless python non fare uso di qualsiasi tipo di ambiente multi-core che gira su.
Questo è un errore comune circa Stackless, in quanto consente al programmatore di sfruttare programmazione basato su thread. Per molte persone questi due sono strettamente intrecciati, ma sono, in realtà due cose separate.
Internamente Stackless utilizza uno scheduler round-robin per pianificare ogni tasklet (micro fili), ma nessuna tasklet può essere eseguito in concomitanza con un altro. Ciò significa che se uno tasklet è occupato, gli altri devono aspettare fino a che tasklet cede il controllo. Per impostazione predefinita, il programma di pianificazione non si fermerà un tasklet e dare tempo del processore ad un altro. E 'responsabilità del tasklet di pianificare sé di nuovo alla fine della coda di pianificazione utilizzando Stackless.schedule (), o finendo i suoi calcoli.
tutti tasklets sono quindi eseguite in modo sequenziale , anche quando nuclei multiplpe sono disponibili.
Il motivo per cui Stackless non ha il supporto multi-core è perché questo rende le discussioni molto più semplice. E questo è proprio quello che stackless è tutto:
Stackless Python è un potenziato versione della programmazione Python linguaggio. Esso consente ai programmatori di raccogliere i frutti di filo basati programmazione senza la prestazione e problemi di complessità associate con fili convenzionali. Il microspire che Stackless aggiunge a Python è un buon mercato e leggero convenienza che può, se usato correttamente, dare i seguenti benefici:
- struttura del programma migliorata.
- codice più leggibile.
- Aumento della produttività dei programmatori.
Ecco un link ad alcune ulteriori informazioni su multipla core e stackless.