首页 > 代码库 > PYTHON多线程

PYTHON多线程

  在单线程的情况下,程序是逐条指令顺序执行的。同一时间只做一个任务,完成了一个任务再进行下一个任务。比如有5个人吃饭,单线程一次只允许一个人吃,一个人吃完了另一个人才能接着吃,假如每个人吃饭都需要1分钟,5个人就需要5分钟。多线程的情况下,程序就会同时进行多个任务,虽然在同一时刻也只能执行某个任务的一条指令,但是由于CPU运行非常快。可以在极短的时间内切换到另一个任务。从宏观效果来看,CPU是多个任务同时执行的。也拿刚才的吃饭做比喻,多线程就相当于5个人同时吃饭,5个人吃完花费的时间和一个人相同,也是1分钟。效率的提高是不言而喻的。下面我们用程序来实现一下,首先是单线程。

import time
def begin(n):
    print("第%s个人开始吃饭"%(n+1))
    time.sleep(1)
    print("第%s个人吃完饭了" %(n+1))
begin_time = time.time()#开始吃饭时间
for count in range(5):
    begin(count)
print("5个人吃饭花费的总时间为",time.time()-begin_time)#统计吃饭用时

运行结果如下:

第1个人开始吃饭

第1个人吃完饭了

第2个人开始吃饭

第2个人吃完饭了

第3个人开始吃饭

第3个人吃完饭了

第4个人开始吃饭

第4个人吃完饭了

第5个人开始吃饭

第5个人吃完饭了

5个人吃饭花费的总时间为 5.002005100250244

从运行结果可以清晰看出,总共用了5秒时间。

             

下面我们再试试多线程:

import threading
import time
def begin(n):
    print("第%s个人开始吃饭"%n)
    time.sleep(1)
    print("第%s个人吃完饭了" %n)
begin_time = time.time()
t_result = []
for count in range(5):
    t = threading.Thread(target=begin, args=("%s"%(count+1),))
    t.start()
    t_result.append(t)
for t in t_result:
    t.join()
print("5个人吃饭花费的总时间为",time.time()-begin_time)

程序运行结果如下:

 第1个人开始吃饭

第2个人开始吃饭

第3个人开始吃饭

第4个人开始吃饭

第5个人开始吃饭

第2个人吃完饭了

第1个人吃完饭了

第5个人吃完饭了

第4个人吃完饭了

第3个人吃完饭了

5个人吃饭花费的总时间为 1.0021629333496094

从运行结果可以清晰看出,总共用了1秒时间。

PYTHON多线程