多线程 vs 多进程
程序: 一堆代码以文本形式存入一个文档
进程: 程序运行的一个状态
包含地址空间, 内存, 数据栈等
每个进程由自己完成独立的运行环境, 多进程共享数据是一个问题
线程
一个进程的独立运行片段, 一个进程可以有多个线程
轻量化的进程
一个进程的多个线程间共享数据和上下文运行环境
共享互斥问题
全局解释锁 (GIL)
python 代码的执行是由 python 虚拟机进行控制
在主循环中有一个控制线程在执行
threading 的使用
直接利用 threading.Thread 生成 Thread 示例
t = threading.Thread(target=xxx, args=(xxx,))
t.start(): 启动多线程
t.join(): <font color=red > 等待多线程执行完成 </font>
案例 01:
- import threading
- import time
- def loop01(in01):
- print("start loop01 at : {0}".format(time.ctime()))
- print("loop01 参数:{0}".format(in01))
- time.sleep(4)
- print("end loop01 at : {0}".format(time.ctime()))
- def loop02(in01, in02):
- print('start loop02 at : {0}'.format(time.ctime()))
- print("loop02 参数, 第一个参数 {0}, 第二个参数 {1}".format(in01,in02))
- time.sleep(2)
- print("end loop02 at : {0}".format(time.ctime()))
- if name == 'main':
- print("Starting at : {0}".format(time.ctime()))
- t1 = threading.Thread(target=loop01,args=("loop01 参数",))
- t2 = threading.Thread(target=loop02,args=("loop02 参数 1","loop02 参数 2"))
- t1.start()
- t2.start()
- t1.join()
- t2.join()
- print("All done at {0}".format(time.ctime()))
- while True:
- time.sleep(10)
来源: http://www.bubuko.com/infodetail-3342612.html