Maison > développement back-end > Tutoriel Python > Comment implémenter le multi-threading en python

Comment implémenter le multi-threading en python

高洛峰
Libérer: 2017-03-02 16:13:22
original
1444 Les gens l'ont consulté

Actuellement, Python propose plusieurs méthodes d'implémentation multithread : thread, threading et multithreading. Le module thread est de niveau relativement bas, et le module threading encapsule les threads et peut être utilisé plus facilement.

Avant la version 2.7, le support des threads par python n'était pas assez complet et ne pouvait pas tirer parti des processeurs multicœurs. Cependant, la version 2.7 de python a envisagé d'améliorer cela, et le module multithreading est apparu. Le module de threading objective principalement certaines opérations de thread et crée des classes Thread. De manière générale, il existe deux modes d'utilisation des threads :

A crée une fonction qui doit être exécutée par le thread, passe cette fonction dans l'objet Thread et la laisse s'exécuter
; Classe Thread d'héritage B, créez une nouvelle classe et écrivez le code à exécuter dans la fonction d'exécution.

Cet article présente deux méthodes de mise en œuvre.
La première méthode consiste à créer une fonction et à la transmettre dans l'objet Thread
Contenu du script t.py

import threading,time
from time import sleep, ctime
def now() :
  return str( time.strftime( '%Y-%m-%d %H:%M:%S' , time.localtime() ) )
def test(nloop, nsec):
  print 'start loop', nloop, 'at:', now()
sleep(nsec)
  print 'loop', nloop, 'done at:', now()
def main():
  print 'starting at:',now()
  threadpool=[]
for i in xrange(10):
    th = threading.Thread(target= test,args= (i,2))
    threadpool.append(th)
for th in threadpool:
    th.start()
for th in threadpool :
    threading.Thread.join( th )
  print 'all Done at:', now()
if __name__ == '__main__':
    main()
Copier après la connexion

Contenu du script thclass.py :

import threading ,time
from time import sleep, ctime
def now() :
  return str( time.strftime( '%Y-%m-%d %H:%M:%S' , time.localtime() ) )
class myThread (threading.Thread) :
"""docstring for myThread"""
   def __init__(self, nloop, nsec) :
     super(myThread, self).__init__()
     self.nloop = nloop
     self.nsec = nsec
   def run(self):
     print 'start loop', self.nloop, 'at:', ctime()
sleep(self.nsec)
     print 'loop', self.nloop, 'done at:', ctime()
def main():
   thpool=[]
   print 'starting at:',now()
for i in xrange(10):
     thpool.append(myThread(i,2))
for th in thpool:
     th.start()
for th in thpool:
     th.join()
   print 'all Done at:', now()
if __name__ == '__main__':
    main()
Copier après la connexion

Ce qui précède est tout le contenu de cet article ?, j'espère qu'il sera utile à tous ceux qui apprennent la programmation python.

Pour plus d'articles sur la façon dont Python implémente le multi-threading, veuillez faire attention au site Web PHP chinois !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal