Pythonでマルチスレッドを実装する方法

高洛峰
リリース: 2017-03-02 16:13:22
オリジナル
1434 人が閲覧しました

現在、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 サイトに注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート