- 多线程 vs 多进程
- 进程:地址空间、内存、数据栈
- 每个进程由自己的完全独立的运行环境,多进程共享数据是一个典型问题
- 线程:有共享的东西,一个进程独立运行的片段
- 轻量化进程
- 一个进程由多个线程组成
- 共享互斥典型问题
- 进程:地址空间、内存、数据栈
- 全局解析器(GIL)
- Python代码执行是由python虚拟机进行控制
- 在主循环中只有一个控制线程在运行
- Python包
- thread
- threading
# Thread
import time
import _thread as thread
def loop1():
print("start time:", time.ctime())
time.sleep(2)
print("end time", time.ctime())
def main():
print("start time:", time.ctime())
thread.start_new_thread(loop1, ())
print("end time", time.ctime())
if __name__ == '__main__':
main()
- threading的使用
- t = threading.Thread(target=xxxx,args=(xx,xx))
- t.start()# 启动多线程
- t.join() #等待多线程执行完成
# Thread
import time
import threading
def loop1():
print("start time:", time.ctime())
time.sleep(2)
print("end time", time.ctime())
def main():
print("start time:", time.ctime())
t = threading.Thread(target=loop1,args={})
t.start()
t.join()
print("end time", time.ctime())
if __name__ == '__main__':
main()
- 守护线程-daemon
- 如果将子线程设置成守护线程,则主线程结束,则子线程结束