私はマルチプロセッシング/マルチスレッド モジュールが初めてで、プログラムの速度を改善できるかどうかを確認しようとしています。問題は、予期しない値を返すことです。threading.Thread
代わりに試してみましたがmultiprocessing.Process
、同じ問題が発生しました-別のスレッドを使用しない場合よりも実行が遅くなります。
この例では multiprocessing モジュールを使用しましたが、マルチスレッドを試してもほぼ同じです (違いはコメントにあります) 2 つの関数が順次実行されている時間と、これらの関数が並列に実行されている時間を出力するコードを次に示します。
import time
from threading import Thread
from multiprocessing import Process
import MyFile
class PerformanceTesting:
def __init__(self):
self.clss = MyFile.MyClass('A')
self.p1 = Process(target=self.f1) # I've tried also t1 = Thread(target=f1)
self.p2 = Process(target=self.f2) # I've tried also t2 = Thread(target=f2)
def f1(self):
results = self.clss.doSomething(arg,arg)
print results
def f2(self):
results = self.clss.doSomething(arg,arg)
print results
if __name__ == "__main__":
perf = PerformanceTesting()
# ATTEMPT USING MULTIPROCESSING
start = time.time()
perf.p1.start()
perf.f2()
perf.p1.join()
print time.time()-start
# ATTEMPT WITHOUT USING MULTIPROCESSING
start = time.time()
perf.f1()
perf.f2()
print time.time()-start
この例の速度を改善できるかどうか教えていただけますか? 私は何を間違っていますか?
私には考えがあります:より多くのプロセスまたはスレッドに分割するには数秒かかるため、結果を1秒で返さなければならない状況では役に立たないのではないでしょうか?