多线程实例分析(一)
2018-02-14 11:54
113 查看
import time import threading def fun(number): print('begin %d' % number) time.sleep(2) print('end %d' % number) pass def main(): print("Start time:", time.ctime()) threads = [] for i in range(5): threads.append(threading.Thread(target=fun, args=(i, ))) time.sleep(2) for i in range(5): threads[i].start() print("before Join") for i in range(5): threads[i].join() print("file end") if __name__ == '__main__': main()
输出的结果是:
Start time: Wed Feb 14 11:29:24 2018
begin 0
begin 1
begin 2
begin 3
begin 4
before Join
end 3
end 1
end 4
end 2
end 0
file end
对于这个结果进行分析:
由于我在主线程(main)也是开启了一个time.sleep(),所以,如果线程是在join()之后再启动的话,就是先输出一个before再输出 start。
有趣的是,在这可以看出end输出是乱序的~
而且由于 file end 是在最后输出,可以看到,在所有的线程结束前,会在主线程中形成阻塞。这点跟C/C++上的也是类似~
PS: 代码中
args = (i, )的逗号是一定要使用的。否则开启不了线程。
相关文章推荐
- android编程之多线程编程实例分析
- 结合实例分析线程及多线程的使用
- PHP多线程之内部多线程实例分析
- 多线程的程序设计实例分析
- 实例分析Java单线程与多线程
- python socket多线程通讯实例分析(聊天室)
- 多线程渲染(Multithreaded- rendering)3D引擎实例分析 : FlagshipEngine
- PHP多线程之内部多线程实例分析
- python socket多线程通讯实例分析(聊天室)
- PHP多线程编程之管道通信实例分析
- 多线程渲染(Multithreaded- rendering)3D引擎实例分析 : FlagshipEngine
- 【多线程 4】多线程实例(实例分析博客在下一篇)
- C#实现多线程的同步方法实例分析
- 【多线程 4】多线程实例(实例分析博客在下一篇)
- 一道多线程通信实例分析
- 【多线程 4】多线程实例(实例分析博客在下一篇)
- PHP多线程编程之管道通信实例分析
- 多线程渲染(Multithreaded- rendering)3D引擎实例分析 : FlagshipEngine
- C#实现向多线程传参的三种方式实例分析
- Servlet单实例多线程模式