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スクリプトの内容
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プログラムの設計を勉強するのに役に立ちます。