嗨,我从python的多处理开始
我有一个像这样的简单代码:
import multiprocessing as mp
import time
def print_screen():
print "Hello world"
def main():
p1 = mp.Process(target=print_screen())
p2 = mp.Process(target=print_screen())
p1.start()
p2.start()
p1.join()
p2.join()
if __name__ == '__main__':
start_time = time.time()
main()
print "run time " + str(time.time() - start_time)
结果是:
Hello world
Hello world
run time 2.06299996376
您能否向我解释为什么即使在运行程序后立即打印了两行“ Hello world”,这些代码仍需要很长时间才能完成。随着我增加进程数,运行时间将增加。非常感谢。
答案 0 :(得分:1)
根据运行此代码的计算机,您的运行时将有很大差异。花费这么长时间是实际上要花费您所运行的系统开始两个完全独立的进程,执行它们,然后停止它们并再次清理它们的时间。
使用进程的优点是允许您使用多个内核,在完全独立的进程中运行任务,但是它具有创建,启动,停止和清理进程的开销。对于不需要真正并行运行但可能正在使用它们需要等待的各种资源(例如文件或网络I / O)的任务,线程可以是比进程更好,更快的解决方案,如果这是考虑。
此外,作为一个一般性的评论:如果您正在编写新代码,则可能使用Python 3而不是2来完成。