Maison >développement back-end >Tutoriel Python >Comment effectuer une programmation multithread Python, comprendre le multithread Python dans un seul article

Comment effectuer une programmation multithread Python, comprendre le multithread Python dans un seul article

Tomorin
Tomorinoriginal
2018-08-16 17:36:432247parcourir

Cet article présente le le multi-threading Python Si vous voulez comprendre le le multi-threading Python, vous devez d'abord comprendre ce qu'est le threading.

Thread est la plus petite unité avec laquelle le système d'exploitation peut effectuer la planification des opérations. Il est inclus dans le processus et constitue la véritable unité opérationnelle du processus. Un thread fait référence à un seul flux de contrôle séquentiel dans un processus. Plusieurs threads peuvent s'exécuter simultanément dans un processus et chaque thread exécute différentes tâches en parallèle.

Et le Multi-threading est similaire à l'exécution de plusieurs programmes différents en même temps. Le multi-threading présente les avantages suivants :


1. Utiliser des threads Les tâches des programmes qui prennent beaucoup de temps peuvent être mises en arrière-plan pour le traitement.

2. L'interface utilisateur peut être plus attrayante, de sorte que si l'utilisateur clique sur un bouton pour déclencher le traitement de certains événements, une barre de progression peut apparaître pour montrer la progression du traitement

La vitesse d'exécution du programme peut s'accélérer

3. Les threads sont plus utiles dans la mise en œuvre de certaines tâches en attente telles que la saisie utilisateur, la lecture et l'écriture de fichiers, ainsi que l'envoi et la réception de données sur le réseau. Dans ce cas, nous pouvons libérer certaines ressources précieuses telles que l'utilisation de la mémoire, etc.

4. Il existe des différences entre les threads et les processus lors de l'exécution. Chaque thread indépendant possède un point d'entrée pour l'exécution du programme, une séquence d'exécution séquentielle et un point de sortie pour le programme. Cependant, les threads ne peuvent pas s'exécuter indépendamment et doivent exister dans le programme d'application, et le programme d'application fournit un contrôle d'exécution de plusieurs threads.

Chaque thread possède son propre ensemble de registres CPU, appelé contexte du thread, qui reflète l'état des registres CPU lors de la dernière exécution du thread.

Le registre du pointeur d'instruction et du pointeur de pile sont les deux registres les plus importants dans le contexte du thread. Le thread s'exécute toujours dans le contexte du processus. Ces adresses sont utilisées pour marquer la mémoire dans l'espace d'adressage du processus qui le possède. le fil.

5. Les discussions peuvent être préemptées (interrompues).

6. Un thread peut être temporairement mis en attente (également appelé veille) pendant que d'autres threads sont en cours d'exécution - c'est la retraite du thread.

Commencez à apprendre le multithreading Python

Il existe deux façons d'utiliser les threads en Python : des fonctions ou des classes pour envelopper des objets thread.

Fonctionnel : Appelez la fonction start_new_thread() dans le module thread pour générer un nouveau thread. La syntaxe est la suivante :

thread.start_new_thread ( function, args[, kwargs] )
Description du paramètre :

1.function - fonction thread.

2.args - les paramètres passés à la fonction thread, il doit être de type tuple.

3.kwargs - Paramètres facultatifs.

Joindre un exemple


#!/usr/bin/python
# -*- coding: UTF-8 -*-
import thread
import time
# 为线程定义一个函数
def print_time( threadName, delay):
count = 0
while count < 5:
time.sleep(delay)
count += 1
print "%s: %s" % ( threadName, time.ctime(time.time()) )
# 创建两个线程
try:
thread.start_new_thread( print_time, ("Thread-1", 2, ) )
thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
print "Error: unable to start thread"
while 1:
pass
Le résultat de l'exécution du programme ci-dessus est le suivant :

Thread-1: Thu Jan 22 15:42:17 2009
Thread-1: Thu Jan 22 15:42:19 2009
Thread-2: Thu Jan 22 15:42:19 2009
Thread-1: Thu Jan 22 15:42:21 2009
Thread-2: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:25 2009
Thread-2: Thu Jan 22 15:42:27 2009
Thread-2: Thu Jan 22 15:42:31 2009
Thread-2: Thu Jan 22 15:42:35 2009
La fin du fil repose généralement sur la fin naturelle de la fonction thread ; cela peut également être Lorsque thread.exit() est appelé dans la fonction thread, il lève une exception SystemExit pour atteindre l'objectif de quitter le thread

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn