嗨,我从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"行。随着进程数量的增加,运行时间将增加。非常感谢。
您的运行时将有很大差异,具体取决于您运行此代码的计算机。花费这么长时间的是运行您的系统实际启动两个完全独立的进程,执行它们,然后停止它们并再次清理它们所花费的时间。
使用进程的优点是允许您使用多个内核,在完全独立的进程中运行任务,但它的缺点是创建、启动、停止和清理进程的开销。对于不需要真正并行运行但可能正在使用需要等待的各种资源(如文件或网络 I/O(的任务,线程可能是比进程更好、更快的解决方案,如果这是一个考虑因素。
另外,作为一般评论:如果你正在编写新代码,可能会在 Python 3 中完成,而不是 2。