资讯专栏INFORMATION COLUMN

Python线程专题1:多线程使用的必要性

Darkgel / 913人阅读

摘要:上一篇文章线程专题纵览篇下一篇文章线程专题多线程共享全局变量在引入多线程之前,我们先来看一个非常简单的实例。实例单线程实例的帅,远近闻名第次传播暂停一秒,不然看不到效果哦结果按照顺序依次打印上面是单线程显示效果,现在我们来用多线程处理一下。

上一篇文章:Python线程专题纵览篇
下一篇文章:Python线程专题2:多线程共享全局变量

在引入多线程之前,我们先来看一个非常简单的实例。

实例:

#单线程实例
import time

def mark(index):
    print("Mark的帅,远近闻名,第%d次传播"%index)
    #暂停一秒,不然看不到效果哦
    time.sleep(1)

if __name__=="__main__":
    for i in range(6):
        mark(i)

结果:按照顺序依次打印

上面是单线程显示效果,现在我们来用多线程处理一下。在这之前,我们应该要知道,thread模块是python比较底层的模块,

为了方便我们控制thread,python又使用threading模块对thread进行了封装,下面就用到了threading模块。

实例:

#多线程实例
import time
import threading

def mark(index):
    print("Mark的帅,远近闻名,第%d次传播"%index)
    #暂停一秒,不然看不到效果哦
    time.sleep(1)

if __name__=="__main__":
    for i in range(6):
        #定义子线程
        t=threading.Thread(target=mark,args=(i,))
        #启动子线程
        t.start()

效果:

看到效果了,原来的单线程,顺序执行,至少需要6s,而使用多线程,差不多1秒多一点就完成,可见运行效率的差距,这也是我们为什么要使用多线程的原因。

2、主线程会等待所有子线程执行完成才结束

要验证这一点很简单,直接看代码:

#主线程会等待所有子线程执行完成才结束
import time
import threading

def mark():
    #暂停3秒
    time.sleep(3)
    print("Mark的帅,远近闻")

if __name__=="__main__":
    print("程序开始执行了")
    # 定义子线程
    t = threading.Thread(target=mark)
    # 启动子线程
    t.start()
    print("单线程程序到这里主线程就会结束了,多线程呢,看看吧")

效果:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42395.html

相关文章

  • Python线程专题纵览篇

    摘要:上一篇文章进程专题完结篇多进程处理的一般建议下一篇文章线程专题多线程使用的必要性进程线程进程能够完成多任务,比如在一个电脑上可以运行多个软件。由于占用资源少,也使得多线程程序并发比较高。 上一篇文章:Python进程专题完结篇:多进程处理的一般建议下一篇文章:Python线程专题1:多线程使用的必要性 进程VS线程 进程:能够完成多任务,比如在一个电脑上可以运行多个软件。线程:也能够...

    张红新 评论0 收藏0
  • Python线程专题2:线程共享全局变量

    摘要:上一篇文章线程专题多线程使用的必要性下一篇文章线程专题对象在一个进程内的所有线程共享全局变量。但多线程对全局变量的更改会导致变量值得混乱。 上一篇文章: Python线程专题1:多线程使用的必要性下一篇文章:Python线程专题3:thread对象 在一个进程内的所有线程共享全局变量。但多线程对全局变量的更改会导致变量值得混乱。 实例:验证同一个进程内所有线程共享全局变量 代码: #...

    Tangpj 评论0 收藏0
  • Python线程专题4:Timer对象、Lock对象、Rlock对象

    摘要:语法创建定时器对象,在秒后运行函数,和提供传递给的参数和关键字参数。在调用方法后才能启动计定时器。如果函数还未执行,取消定时器。否则,锁将保持已锁定状态。 上一篇文章:Python线程专题3:thread对象下一篇文章:Python线程专题5:信号量与有边界的信号量 Timer对象、Lock对象、Rlock对象 Timer对象 Timer对象用于在稍后的某个时间执行一个函数。 语法:...

    Edison 评论0 收藏0
  • Python线程专题10:queue、线程按顺序执行

    摘要:实例使用队列一般可以简化多线程的程序。实际开发中,此处应该使用有用的工作代替完成,指示收到和返回哨兵好帅运行结果好帅多线程按顺序执行直接看实例吧,控制多线程的执行顺序代码控制多线程的执行顺序创建实例,第一个开始不上锁结果 上一篇文章:Python线程专题9:线程终止与挂起、实用工具函数下一篇文章:敬请期待 queue模块实现了各种【多生产者-多消费者】队列。可用于在执行的多个线程之间安...

    scq000 评论0 收藏0
  • Python线程专题8:使用注意事项

    摘要:上一篇文章线程专题条件变量下一篇文章线程专题线程终止与挂起使用诸如之类的锁原语时,必须多加小心,锁的错误使用很容易导致死锁或相互竞争。依赖锁的代码应该保证当出现异常时可以正常的释放锁。 上一篇文章:Python线程专题7:条件变量下一篇文章:Python线程专题9:线程终止与挂起 使用诸如Lock、RLock、Semphore之类的锁原语时,必须多加小心,锁的错误使用很容易导致死锁或...

    phoenixsky 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<