Vic*_*ira 0 python multiprocessing
基于这个非常有用的教程,我尝试了一个简单的Python实现multiprocessing来衡量它的有效性.这些模块multi1,multi2,multi3包含ODE的集成,并在CSV输出的计算值(它并不重要,他们在这里为一个脚本来执行的东西).
import multiprocessing
import multi1
import multi2
import multi3
import time
t0 = time.time()
if __name__ == '__main__':
    p1 = multiprocessing.Process(target = multi1.main(), args=())
    p2 = multiprocessing.Process(target = multi2.main(), args=())
    p3 = multiprocessing.Process(target = multi3.main(), args=())
    p1.start()
    p2.start()
    p3.start()
    p1.join()
    p2.join()
    p3.join()
t1 = time.time()
multi1.main()
multi2.main()
multi3.main()
t2 = time.time()
print t1-t0
print t2-t1
Run Code Online (Sandbox Code Playgroud)
问题是打印时间相等,所以multiprocessing没有加快过程.为什么?
您调用 main了主线程,并将返回值(可能None)作为传递target,因此您的工作进程中没有进行任何实际工作.删除调用parens,因此您无需调用它即可传递函数,例如:
p1 = multiprocessing.Process(target=multi1.main, args=())
p2 = multiprocessing.Process(target=multi2.main, args=())
p3 = multiprocessing.Process(target=multi3.main, args=())
Run Code Online (Sandbox Code Playgroud)
这与线程情况中看到的基本问题相同.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           65 次  |  
        
|   最近记录:  |