前面说的多进程可以完成多任务, 为什么还需要讲多线程呢,
多进程是copy 一份代码,然后再执行, 就相当于你电脑上安装了两个微信,同时运行。
有个问题就是如果想实现 一个微信聊天 开多个窗口呢, 这个是多进程是无法实现的,是在一个代码块里实现多任务,
那就用到了 多线程。
多线程–threading
python 的 thread模块 比较底层,而 threading 是对 thread 做了一些封装,封装的目的 就是让我们使用方便。
示例如下:
import threading ,time
def test():
time.sleep(1)
print("我是线程,请你要尊重我")
if __name__=='__main__':
for i in range(10):
t=threading.Thread(target=test) # 传递线程任务,并返回线程对象
t.start() # 启动线程
如果不用多线程的话, 需要要执行十次test 需要至少要10s,但是用了多线程 就需要1s的时候,大大的提高了效率
打印结果为:
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
强调一点 , 主线程会等待子线程完成再退出
我们加一个时间戳就可以了,如图:
import threading ,time
def test():
time.sleep(1)
print("我是线程,请你要尊重我")
if __name__=='__main__':
a=time.time()
for i in range(10):
t=threading.Thread(target=test)
t.start()
b=time.time()
print(b-a)
打印结果:
0.0030028820037841797 # 这个是主进程运行的代码,
我是线程,请你要尊重我 #主进程的代码运行结束后并没有等待子进程直接完成,但是没有退出,
我是线程,请你要尊重我 # #如果退出也不会下边的打印
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我