3
我想了解在Python多處理,我寫了下面的程序:process join()如何工作?
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
這不是我所期望的。你能解釋一下發生了什麼嗎?
會發生什麼,如果你'進口sys',並把'sys.stdout.flush()'最終打印過嗎? –
@DavisYoshida,如果我使用flush(),則輸出如我所料。我仍然不明白髮生了什麼事。 –
如果我理解正確,輸出被緩衝,但進程正在按照我預期的順序執行函數。 –