python 多线程编程的有趣的现象02
2012-01-25 14:31
507 查看
现在对于python多线程的编程又研究了一下,发现,刚才出现的格式问题可以成功解决了,但是各个线程之间的执行顺序问题还是表现出来不一定的特点,不过这对于多线程编程而言,几个相互平等的线程之间的执行顺序先后没有很大的要求,重要是能够体现多线程的“并行性”。
下面贴几张图:
这是修改后的代码,把原来的print语句改成了使用 sys.stdout.write(),原来一直以为这两种打印字符的方法是没有差别的。但是在执行多线程程序的时候,出现了差别,有时间要好好研究一下python的多线程实现机制和print语句的实现方法
一下两张是输出结果情况
这两种不同的输出结果显示了python在地位相同的多线程程序的时候并不会严格按照代码顺序来执行各个线程
以下一些测试则也可以简单证明这个推测:
代码:
输出结果:
代码:
输出结果:
下面贴几张图:
这是修改后的代码,把原来的print语句改成了使用 sys.stdout.write(),原来一直以为这两种打印字符的方法是没有差别的。但是在执行多线程程序的时候,出现了差别,有时间要好好研究一下python的多线程实现机制和print语句的实现方法
一下两张是输出结果情况
这两种不同的输出结果显示了python在地位相同的多线程程序的时候并不会严格按照代码顺序来执行各个线程
以下一些测试则也可以简单证明这个推测:
代码:
# -*- coding: utf-8 -*- ''' filename:test.py @author: cloudaice ''' import sys import thread from time import sleep from time import ctime def loop0(): sys.stdout.write('start loop 0 at: %s\n' % ctime()) sleep(2) sys.stdout.write('loop 0 done at: %s\n' % ctime()) def loop1(): sys.stdout.write('start loop 1 at: %s\n' % ctime()) sleep(3) sys.stdout.write('loop 1 dome at: %s\n' % ctime()) def loop2(): sys.stdout.write('start loop 2 at: %s\n' % ctime()) sleep(4) sys.stdout.write('loop 2 dome at: %s\n' % ctime()) def loop3(): sys.stdout.write('start loop 3 at: %s\n' % ctime()) sleep(5) sys.stdout.write('loop 4 dome at: %s\n' % ctime()) def main(): sys.stdout.write('starting at: %s\n' % ctime()) thread.start_new_thread(loop0,()) sys.stdout.write("0和1之间\n") thread.start_new_thread(loop1,()) sys.stdout.write("1和2之间\n") thread.start_new_thread(loop2,()) sys.stdout.write("2和3之间\n") thread.start_new_thread(loop3,()) sleep(10) sys.stdout.write("all done at: %s\n" % ctime()) if __name__ == '__main__': main()
输出结果:
代码:
# -*- coding: utf-8 -*- ''' filename:test.py @author: cloudaice ''' import sys import thread from time import sleep from time import ctime def loop0(): sys.stdout.write('start loop 0 at: %s\n' % ctime()) sleep(2) sys.stdout.write('loop 0 done at: %s\n' % ctime()) def loop1(): sys.stdout.write('start loop 1 at: %s\n' % ctime()) sleep(3) sys.stdout.write('loop 1 dome at: %s\n' % ctime()) def loop2(): sys.stdout.write('start loop 2 at: %s\n' % ctime()) sleep(4) sys.stdout.write('loop 2 dome at: %s\n' % ctime()) def loop3(): sys.stdout.write('start loop 3 at: %s\n' % ctime()) sleep(5) sys.stdout.write('loop 4 dome at: %s\n' % ctime()) def sayhello(): sys.stdout.write("我在这里呢\n") def main(): sys.stdout.write('starting at: %s\n' % ctime()) thread.start_new_thread(loop0,()) sys.stdout.write("0和1之间\n") thread.start_new_thread(loop1,()) sys.stdout.write("1和2之间\n") sayhello() thread.start_new_thread(loop2,()) sys.stdout.write("2和3之间\n") thread.start_new_thread(loop3,()) sleep(6) sys.stdout.write("all done at: %s\n" % ctime()) if __name__ == '__main__': main()
输出结果:
相关文章推荐
- python 多线程编程的有趣的现象
- 多线程编程---python
- Python多线程编程方式2 threading库的介绍
- python并发编程之多进程、多线程、异步和协程
- Python 的 Socket 编程多线程教程
- Python多线程编程及同步处理
- Python--多线程网络编程
- Python有趣的现象——x+=y VS x=x+y
- Python学习笔记--多线程编程,thread
- python核心编程学习笔记-2016-07-23-02-切片索引
- 【脚本语言系列】关于 Python 多线程编程, 你需要知道的事
- day11_python多线程实例代码——02
- 一文学会 Python 多线程编程
- python并发编程之多进程、多线程、异步和协程详解
- python高效编程技巧11(如何使用多线程)
- python多线程编程: 使用互斥锁同步线程
- python并发编程之多进程、多线程、异步和协程
- python的多线程编程之锁
- python多线程编程
- python 进行多线程编程,使用Semaphore控制线程数