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?

È stato utile?

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:

dal sito ufficiale stackless

  

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top