Pourquoi n'y a-t-il pas de GIL dans la machine virtuelle Java? Pourquoi Python en a-t-il tellement besoin?

AgentLiquid:

J'espère que quelqu'un pourra donner un aperçu de ce qui est fondamentalement différent de la machine virtuelle Java qui lui permet d'implémenter correctement les threads sans avoir besoin d'un Global Interpreter Lock (GIL), alors que Python nécessite un tel mal.

Alex Martelli:

Python (le langage) n'a pas besoin d'un GIL (c'est pourquoi il peut parfaitement être implémenté sur JVM [Jython] et .NET [IronPython], et ces implémentations multithread librement). CPython (l'implémentation populaire) a toujours utilisé un GIL pour faciliter le codage (en particulier le codage des mécanismes de ramasse-miettes) et l'intégration de bibliothèques codées en C non thread-safe (il y en avait une tonne autour; -).

Le projet Unladen Swallow , entre autres objectifs ambitieux, prévoit une machine virtuelle sans GIL pour Python - pour citer ce site, "De plus, nous avons l'intention de supprimer le GIL et de corriger l'état du multithreading en Python. Nous pensons que c'est possible grâce à la mise en œuvre d'un système GC plus sophistiqué, quelque chose comme IBM's Recycler (Bacon et al, 2001). "

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Pourquoi "À l'intérieur de la machine virtuelle Java" dit-il "NewbornBaby n'a pas besoin d'être chargé"?

Pourquoi n'y a-t-il pas d'ID de session dans la réponse de connexion http en Python ?

Pourquoi n'y a-t-il pas d'en-têtes de fonction dans OCaml?

Pourquoi AT&T jmp * bar s'assemble-t-il en code machine avec un octet SIB? Il n'y a pas de registre utilisé dans l'instruction

Pourquoi n'y aura-t-il pas de propriétés natives dans Java 7?

Pourquoi * ngFor n'a-t-il pas besoin de crochets?

Pourquoi n'y a-t-il pas de "mov rsp, rbp" dans la fonction prologue ?

Pourquoi n'y a-t-il pas de transform_if dans la bibliothèque standard C ++?

Pourquoi n'y a-t-il pas de changement pour `<Input> '' dans la conception Ant

Pourquoi n'y a-t-il pas de classement explicite dans la classification des chiffres manuscrits?

Pourquoi n'y a-t-il pas d'archives dans la section organisateur de xcode?

Pourquoi n'y a-t-il pas de fonctions «existantes» dans la carte C ++?

Pourquoi n'y a-t-il pas de BiConsumer primitif dans Java 8?

Pourquoi n'y a-t-il pas de compréhension de tuple en Python?

Pourquoi n'y a-t-il pas de fonction xrange dans Python3?

Pourquoi n'y a-t-il pas de ceil (float) en Java?

Pourquoi n'y a-t-il pas de variables globales en Java?

Pourquoi n'y a-t-il pas de méthode "List.reverse ()" en Java?

Pourquoi n'y a-t-il pas de String.Empty en Java?

Pourquoi n'y a-t-il pas d'octet ou de littéraux courts en Java?

Pourquoi n'y a-t-il pas de SortedList en Java?

Pourquoi n'y a-t-il pas de fonctionnalité constante en Java?

Pourquoi n'y a-t-il pas de variable statique locale en Java?

Pourquoi n'y a-t-il pas de littéraux binaires en Java?

Pourquoi Java a-t-il besoin d'interfaces et Smalltalk n'en a pas?

Pourquoi n'y a-t-il pas de méthode list.clear () en python?

Pourquoi un descripteur de fichier n'a-t-il pas besoin d'un sigil en Perl?

Pourquoi Java a-t-il une "NullPointerException" alors qu'il n'y a pas de pointeurs en Java?

Pourquoi n'y a-t-il pas <<<?

TOP liste

  1. 1

    comment afficher un bouton au-dessus d'un autre élément ?

  2. 2

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  3. 3

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  4. 4

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  5. 5

    Conversion double en BigDecimal en Java

  6. 6

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Passer la taille d'un tableau 2D à une fonction ?

  9. 9

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  10. 10

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  11. 11

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  12. 12

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  13. 13

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  14. 14

    Exporter la table de l'arborescence vers CSV avec mise en forme

  15. 15

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  16. 16

    Créer un système Buzzer à l'aide de python

  17. 17

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  18. 18

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  19. 19

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  20. 20

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  21. 21

    Microsoft.WebApplication.targets

chaudétiquette

Archive