我是多处理/多线程模块的新手,我正在尝试检查它是否可以提高程序的速度。问题是它返回了意外的值。我也尝试过,threading.Thread
但multiprocessing.Process
发生了同样的问题 - 它比不使用另一个线程运行得慢。
在这个例子中,我使用了多处理模块,但是当我尝试多线程时它几乎是一样的(不同之处在注释中)这是打印两个函数顺序运行的时间和这些函数并行运行的时间的代码:
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
你能告诉我是否有可能提高这个例子的速度吗?我做错了什么?
我有一个想法:是不是因为分成更多的进程或线程需要几秒钟,所以在必须在一秒钟内返回结果的情况下它无济于事?