pythonはマルチスレッドを実現する2つの方法です。


現在のpythonは、いくつかのマルチスレッド実装方式thread、threading、multihreadingを提供しています。その中で、threadモジュールは下の層と比較して、threadingモジュールはthreadにいくつかの包装をしています。もっと便利に使用できます。
2.7バージョン前のpythonはスレッドに対するサポートがまだ不十分で、マルチコアCPUを利用できませんでしたが、2.7バージョンのpythonでは改善を検討しています。multihreadingが現れました。  モジュールthreadingモジュールの中では主にいくつかのスレッドの操作を対象にして、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プログラムの設計を勉強するのに役に立ちます。