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 ページをダウンロードするためのマルチスレッド スクリプトを作成できるはずです。質問してください。