現在、Python はスレッド、スレッド化、マルチスレッド化という複数のマルチスレッド実装メソッドを提供しています。スレッド モジュールは比較的低レベルであり、スレッド モジュールはスレッドをラップしてより便利に使用できます。
バージョン 2.7 より前の Python のスレッドサポートは十分ではなく、マルチコア CPU を活用できませんでしたが、Python バージョン 2.7 ではこれを改善することが検討され、マルチスレッドモジュールが登場しました。スレッド モジュールは主にいくつかのスレッド操作をオブジェクト化し、Thread クラスを作成します。一般的に、スレッドを使用するには 2 つのモードがあります:
A スレッドによって実行される関数を作成し、この関数を Thread オブジェクトに渡して実行します。
B Thread クラスを継承し、新しいクラスを作成します。 , 実行されたコードは run 関数に書き込まれます。
この記事では 2 つの実装方法を紹介します。
最初の方法は、関数を作成して Thread オブジェクトに渡すことです
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()
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()
以上がこの記事の内容です。Python プログラミングを学ぶすべての人に役立つことを願っています。
Python がマルチスレッドを実装する方法に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。