源代码如下:
import thread
from time import sleep, ctime
loops = [4, 2]
def loop(nloop, nsec, lock):
print 'start loop', nloop, ' at: ', ctime()
sleep(nsec)
print 'loop', nloop, 'at: ', ctime()
lock.release()
def main():
print 'starting at: ', ctime()
locks = []
nloops = range(len(loops))
for i in nloops:
lock = thread.allocate_lock()
lock.acquire()
locks.append(lock)
for i in nloops:
thread.start_new_thread(loop, (i, loops[i], locks[i]))
for i in nloops:
while locks[i].locked(): pass
print 'all DONE at: ', ctime()
if __name__ == '__main__':
main()
为什么输出是这个样子的?
starting at: Fri Mar 4 17:53:11 2016
start loop start loop 10 at: Fri Mar 4 17:53:11 2016
at: Fri Mar 4 17:53:11 2016
loop 1 at: Fri Mar 4 17:53:13 2016
loop 0 at: Fri Mar 4 17:53:15 2016
all DONE at: Fri Mar 4 17:53:15 2016
为什么不是第一个线程先打印出完整的第一句话 然后第二个线程打印出完整的第二句话?