进程 join() 是如何工作的?

How does process join() work?

我试图了解 Python 中的多处理,我编写了以下程序:

from multiprocessing import Process

numOfLoops = 10

#function for each process
def func():
    a = float(0.0)
    for i in xrange(0, numOfLoops):
        a += 0.5
        print a 

processes = []
numOfProcesses = 2
#create the processes
for i in xrange(0, numOfProcesses):
    processes.append(Process(target=func))

for process in processes:
    process.start() #Start the processes
for process in processes:
    process.join()  #wait for each process to terminate  

print "shouldn't this statement be printed at the end??"

我创建了两个执行函数 func() 的进程。在继续执行程序之前,我使用 join() 方法等待每个进程终止。这不是说最后一个打印语句应该在两个进程都执行完它们的功能之后,在程序的最后打印出来吗? 但我的输出是:

shouldn't this statement be printed at the end??
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10

这不是我所期望的。你能解释一下这是怎么回事吗?

非常简单,它只是等待每个 运行 进程完成,当这种情况发生时,它 returns。

之所以称为 join 是因为将进程合并为一个进程。