python多线程编程2

如上一节,python的threading.thread类有一个run方法,用于定义线程的功能函数,可以在自己的线程类中覆盖该方法。而创建自己的线程实例后,通过thread类的start方法,可以启动该线程,交给python虚拟机进行调度,当该线程获得执行的机会时,就会调用run方法执行线程。让我们开始第一个例子:

# encoding: UTF-8import threadingimport time  class MyThread(threading.Thread):    def run(self):        for i in range(3):            time.sleep(1)            msg = "I'm "+self.name+' @ '+str(i)            print msgdef test():    for i in range(5):        t = MyThread()        t.start()if __name__ == '__main__':    test()

登录后复制

执行结果:

I’m Thread-1 @ 0

I’m Thread-2 @ 0

I’m Thread-5 @ 0

立即学习“Python免费学习笔记(深入)”;

I’m Thread-3 @ 0

I’m Thread-4 @ 0

I’m Thread-3 @ 1

I’m Thread-4 @ 1

I’m Thread-5 @ 1

I’m Thread-1 @ 1

I’m Thread-2 @ 1

I’m Thread-4 @ 2

I’m Thread-5 @ 2

I’m Thread-2 @ 2

I’m Thread-1 @ 2

I’m Thread-3 @ 2

从代码和执行结果我们可以看出,多线程程序的执行顺序是不确定的。当执行到sleep语句时,线程将被阻塞(Blocked),到sleep结束后,线程进入就绪(Runnable)状态,等待调度。而线程调度将自行选择一个线程执行。上面的代码中只能保证每个线程都运行完整个run函数,但是线程的启动顺序、run函数中每次循环的执行顺序都不能确定。

此外需要注意的是:

1.每个线程一定会有一个名字,尽管上面的例子中没有指定线程对象的name,但是python会自动为线程指定一个名字。

2.当线程的run()方法结束时该线程完成。

3. 无法控制线程调度程序,但可以通过别的方式来影响线程调度的方式。

上面的例子只是简单的演示了创建了线程、主动挂起以及退出线程。下一节,将讨论用互斥锁进行线程同步。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2284443.html

(0)
上一篇 2025年2月27日 20:45:10
下一篇 2025年2月23日 13:48:40

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python多线程编程1

    多线程编程必须理解的一些基本概念,适用于所有编程语言。内容: 并发式编程 多任务操作系统 多线程vs多进程 线程安全 立即学习“Python免费学习笔记(深入)”; 线程的生命周期 线程的类型 并发式编程 不同的编程范式对软件有不同的视角。…

    编程技术 2025年2月27日
    200
  • 使用Python读取和写入mp3文件的id3v1信息

    1.起因 一直以来疯迷“冬吴相对论”,为了整理下载他的MP3花了不少功夫,今天突然发现将电脑中的mp3导入到itunes后,文件名竟然不识别了。#_* itunes自动识别了mp3的信息内容。多次一举么,文件名挺好。事实如此,让我深感不完美…

    编程技术 2025年2月27日
    200
  • Python连接Redis连接配置

    系统环境: OS:Oracle Linux Enterprise 5.6 redis:redis-2.6.8 python:Python-2.7.3 redis的python包版本:redis-2.7.2.tar 立即学习“Python免费…

    编程技术 2025年2月27日
    200
  • Python 支持重启的异步 IO

    摘要 这是一份从Python3.3开始的Python3异步I/O提议。研究从PEP 3153缺失的具体提议。 这提议包括了一个可插入式的事件循环API,传输和与Twisted相似的协议抽象,以及来自(PEP 380) 基于yield的更高级…

    编程技术 2025年2月27日
    200
  • python发送邮件实例 – 使用smtplib模块

    # 导入 smtplib 和 MIMETextimport smtplibfrom email.mime.text import MIMEText    # 定义发送列表mailto_list=[“root@pythontab.com”,”…

    编程技术 2025年2月27日
    200
  • 用Python备份MYSQL 数据库

    工作需要,对公司的mysql数据库进行备份,赶上刚刚开始学python,看了一套简单的python教学视频,简单的写了个备份脚本,个人表示 对python 的class 、function、build-in function 、私有变量、全…

    编程技术 2025年2月27日
    200
  • python读取和生成excel文件

    今天来看一下如何使用python处理excel文件,处理excel文件是在工作中经常用到的,python为我们考虑到了这一点,python中本身就自带csv模块。 1.用python读取csv文件: csv是逗号分隔符格式 一般我们用的ex…

    2025年2月27日
    100
  • 用python脚本监控并发量

    该脚本作用用于查询日志过去一分钟内的并发量,并发单位位1分钟,结果打印在标准输出中,可以配合一些软件实现日志的并发实时监控,比如zabbix。 #! /usr/local/bin/python3import sysimport reimpo…

    编程技术 2025年2月27日
    200
  • 用50行Python代码制作一个计算器

    简介 在这篇文章中,我将向大家演示怎样向一个通用计算器一样解析并计算一个四则运算表达式。当我们结束的时候,我们将得到一个可以处理诸如 1+2*-(-3+2)/5.6+3样式的表达式的计算器了。当然,你也可以将它拓展的更为强大。 我本意是想提…

    编程技术 2025年2月27日
    200
  • 分布式任务系统GEARMAN FOR PYTHON初探

    了解gearman,请访问gearman官网:gearman.org/ ++++++++++++++++++++++++++++++++++++++++++++ 安装Gearman: ++++++++++++++++++++++++++++…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论