Derzeit bietet Python mehrere Multithreading-Implementierungsmethoden: Thread, Threading und Multithreading. Das Thread-Modul ist relativ niedrig, und das Threading-Modul umschließt Threads und kann bequemer verwendet werden.
Vor Version 2.7 war die Unterstützung von Python für Threads nicht vollständig genug und konnte die Vorteile von Multi-Core-CPUs nicht nutzen. In Version 2.7 von Python wurde jedoch über eine Verbesserung nachgedacht, und das Multithreading-Modul ist erschienen. Das Threading-Modul objektiviert hauptsächlich einige Thread-Operationen und erstellt Thread-Klassen. Im Allgemeinen gibt es zwei Modi für die Verwendung von Threads:
A erstellt eine Funktion, die vom Thread ausgeführt werden soll, übergibt diese Funktion an das Thread-Objekt und lässt sie ausführen
B-Vererbung Thread-Klasse, erstellen Sie eine neue Klasse und schreiben Sie den auszuführenden Code in die Ausführungsfunktion.
In diesem Artikel werden zwei Implementierungsmethoden vorgestellt.
Die erste Methode besteht darin, eine Funktion zu erstellen und sie an das Thread-Objekt
t.py-Skriptinhalt
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()
thclass.py-Skriptinhalt:
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()
Das Obige Ist der gesamte Inhalt dieses Artikels? Ich hoffe, er wird für alle hilfreich sein, die Python-Programmierung lernen.
Weitere Artikel zur Implementierung von Multithreading in Python finden Sie auf der chinesischen PHP-Website!