ホームページ  >  記事  >  バックエンド開発  >  Python マルチスレッド アプリケーションの概要

Python マルチスレッド アプリケーションの概要

WBOY
WBOYオリジナル
2016-06-16 08:46:591149ブラウズ

Python はマルチスレッドを簡単にサポートできます。スレッド、ミューテックス ロック、セマフォ、その他の要素をすばやく作成し、スレッドの読み取りおよび書き込み同期ミューテックスをサポートできます。問題は、Python は Python 仮想マシン上で実行され、作成されるマルチスレッドは仮想スレッドである可能性があり、Python 仮想マシンによってポーリングおよびスケジュールされる必要があるため、Python マルチスレッドの可用性が大幅に低下することです。今日は、古典的なプロデューサーとコンシューマーの問題を使用して、Python のマルチスレッド コードのアプリケーションを説明しました。

コードをコピー コードは次のとおりです:

#encoding=utf-8
インポート スレッド
インポート ランダム
インポート時間
キューからインポート キュー

クラス プロデューサー(スレッド。スレッド):

def __init__(self, threadname, queue):
threading.Thread.__init__(self, name = threadname)
self.sharedata = queue

def run (self):
for i in range(20):
print self.getName(),'adding',i,'to queue'
self.sharedata.put(i)
time .sleep(random. randrange(10)/10.0)
print self.getName(),'Finished'


# Consumer thread

class Consumer(threading.Thread) :


def __init__(self, threadname, queue):
threading.Thread.__init__(self, name = threadname)
self.sharedata = queue


def run( self):

for i in range(20):
print self.getName(),'値を取得しました:',self.sharedata.get()
time .sleep(random. randrange(10)/10.0)
print self.getName(),'Finished'


# メインスレッド

def main():

queue = Queue()
プロデューサー = プロデューサー('プロデューサー', キュー)
コンシューマー = コンシューマー('コンシューマー', キュー)
print 'スレッドを開始しています ...'
プロデューサー .start()
consumer.start()
Producer.join()
consumer.join()
print 'すべてのスレッドが終了しました。'
if __name__ == '__main__':
main( )

このコードを自分で実行すると、また違った感覚が得られるかもしれません! それを理解した後、Python cookielib を使用してから、Python urllib を使用して、Web ページをダウンロードするためのマルチスレッド スクリプトを作成できるはずです。質問してください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。