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()
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()
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 !