Python使用多线程

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的工具,是操作系统结构的基础。而线程又被称为轻量级进程,是程序中一个单一的顺序控制流程,进程内一个相对独立,可调度的执行单元,是系统独立调度和分派CPU的基本单元。线程自身只拥有一点在运行中必不可少的资源,例如程序计数器,一组寄存器和栈空间等,但可以和同属一个进程的其它线程共享进程所拥有的全部资源。

python程序默认使用单线程。

代码如下:

from time import sleep, time
 
def play(thing, t):
    print('I play %s %s seconds' % (thing, t))
    sleep(t) # 推迟调用线程执行的秒数
 
def study(thing, t):
    print('I study %s %s seconds' % (thing, t))
    sleep(t)
 
if __name__ == '__main__':
    start_time = time() #返回一个当前时间的时间戳,从1970年开始计时,单位秒
    play('computer', 3)
    study('English', 3)
    end_time = time()
    print('I spend all %s seconds' % (end_time - start_time))
执行结果:
Python单线程示例

从代码中可以看出,程序先执行了play函数,然后休眠3秒钟,接着执行study函数,再休眠3秒钟,最终用时约6秒左右(包括程序本身运行花费的时间以及程序休眠的时间)

如果使用了多线程,则意味着play函数与study函数可以同时执行,这样在本例中将节省将近一半的时间。

代码如下:

from time import time, sleep
from threading import Thread
 
def play(thing, t):
    print('I play %s %s seconds' % (thing, t))
    sleep(t)
 
def study(thing, t):
    print('I study %s %s seconds' % (thing, t))
    sleep(t)
 
if __name__ == '__main__':
    threads = []
    start_time = time()
    
    t1 = Thread(target = play, args = ('computer', 3)) # 创建线程target传递方法或者函数, args传递参数,是元组类型
    threads.append(t1)
    t2 = Thread(target = study, args = ('English', 3))
    threads.append(t2)
 
    for t in threads:
        t.setDaemon(True)  # 将线程设置为守护线程,须在start方法前设置,不设置则线程会被无限挂起
        t.start()  # 线程开始活动
    t.join() # join方法将使父线程一直阻塞,直到子线程全部完成运行由于
             # 若没有该方法,则同一时间启动,主线程执行结束后,所有子线程也会一同结束掉
 
    end_time = time()
    print('I spend all %s seconds' % (end_time - start_time))
执行结果:

Python多线程示例

补充一点,使用__name__和__main__的知识,在Python中,当一个模块作为整体被执行时,module.__name__的值是__main__,而被其它模块所导入时,则module.__name__的值为模块自身的名字。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值