可以通过实例化一个threading.Thread()对象来创建子线程。

import threading
import time def listen_music(num):
print("----> %d" % num)
print("begin to listen music at ", time.ctime())
time.sleep(5)
print("end to listen music at ", time.ctime()) if __name__ == '__main__': t1 = threading.Thread(target=listen_music, args=(13,)) t1.start() print("Two things is end....")

  其中通过

t1 = threading.Thread(target=listen_music, args=(13,))

  这句代码,创建了一个子线程。target参数是该线程要执行的函数;args参数需要传入一个元组,该元组是函数运行需要的实参。

t1.start() 启动线程;但实际上start()方法只是让线程处于就绪状态,即可以被计算机的CPU切换到该线程并执行。

运行结果如下:

----> 13
listening is end.... # 主线程执行的语句
begin to listen music at Tue Mar 19 22:03:36 2019 # 子线程开始的语句
end to listen music at Tue Mar 19 22:03:41 2019 # 子线程结束的语句

其中可以看到,主线程主要执行了主函数中的最后一句打印;子线程与主线程同时开始,但time.sleep(10)让子线程休眠了10秒,在主线程结束后10秒,子线程才会结束。

python线程——创建和启动的更多相关文章

  1. python 线程创建和传参(28)

    在以前的文章中虽然我们没有介绍过线程这个概念,但是实际上前面所有代码都是线程,只不过是单线程,代码由上而下依次执行或者进入main函数执行,这样的单线程也称为主线程. 有了单线程的话,什么又是多线程? ...

  2. Java并发1——线程创建、启动、生命周期与线程控制

    内容提要: 线程与进程 为什么要使用多线程/进程?线程与进程的区别?线程对比进程的优势?Java中有多进程吗? 线程的创建与启动 线程的创建有哪几种方式?它们之间有什么区别? 线程的生命周期与线程控制 ...

  3. java线程 — 创建和启动线程

    创建和启动线程,传统有两种方式: 方式1:继承Thread类: 方式2:实现Runnable接口: 线程类(java.lang.Thread):Thread类和Thread的子类才能称之为线程类.阅读 ...

  4. Java并发编程之线程创建和启动(Thread、Runnable、Callable和Future)

    这一系列的文章暂不涉及Java多线程开发中的底层原理以及JMM.JVM部分的解析(将另文总结),主要关注实际编码中Java并发编程的核心知识点和应知应会部分. 说在前面,Java并发编程的实质,是线程 ...

  5. python 线程(创建2种方式,锁,死锁,递归锁,GIL锁,守护进程)

    ###############总结############ 线程创建的2种方式(重点) 进程:资源分配单位    线程:cpu执行单位(实体) 线程的创建和销毁的开销特别小 线程之间资源共享,是同一个 ...

  6. Python线程创建与使用

    Python多为线程编程提供了两个简单明了的模块:thread和threading,Python3中已经不存thread模块,已经被改名为_thread,实际优先使用 threading模块. 1.P ...

  7. threading:线程创建、启动、睡眠、退出

    1.方法一:将要执行的函数作为参数传递给threading.Thread() import threading import time def func(n): global count time.s ...

  8. java线程基础巩固---创建并启动线程

    对于java的并发编程方面的东东,不管是面试还是实际工作开发都是非常重要的,而往往只要涉及到并发相关的东东有点让人觉得有点难,而实际工作中涉及到并发可能就是简单的用下同步块.上锁之类的一些简单的操作, ...

  9. python线程条件变量Condition(31)

    对于线程与线程之间的交互我们在前面的文章已经介绍了 python 互斥锁Lock / python事件Event , 今天继续介绍一种线程交互方式 – 线程条件变量Condition. 一.线程条件变 ...

随机推荐

  1. 使用cmd命令导入SQL文件

    1 . 进入SQL安装目录下的bin目录,比如我的是在 C:\Program Files\MySQL\MySQL Server 5.5\bin目录下 2. 开始 --->运行--->输入c ...

  2. Longest Palindrome 最长回文串问题

    1.题目 Given a string s, find the longest palindromic substring in s. You may assume that the maximum ...

  3. echars踩坑之图表缓存

    针对echars 在一个图表内渲染多次数据时,图表会缓存上一次的数据导致下一次的数据图表变形.使用clear()清除图表缓存. 不让页面缓存的方法 按F12打开Network在Disable cach ...

  4. javaMail实现收发邮件(四)

    JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操作,在介绍这些类之前,我们先来了解下邮件接收API的体系结构,JavaMai API中定义了一个java.mail.Store类 ...

  5. html 分页

    /*列表分页底部按钮*/ div.tablefooter{ color: #4f6d95; } select.pageLength{ border: 1px solid #d0daea; border ...

  6. 配置ESP8266 NONOS SDK时由于工具链版本差异引发的故障

    前几天部署ESP8266_NONOS_SDK时遇到了一个看似奇怪的问题,描述如下: examples例程可以通过编译,但烧写到ESP8266模块后,程序无法正常运行,编译和烧写的相关配置均无误.在bo ...

  7. Opencv-Python学习笔记(二)

    2. 使用OpenCV3处理图像 2.1 不同色彩空间的转换 OpenCV中有数百种关于在不同色彩空间之间转换的方法. 三种常用色彩空间:灰度.BGR.HSV(Hue色调,Saturation饱和度, ...

  8. 理解StringBuilder

    StringBuilder objects are like String objects, except that they can be modified. Internally, these o ...

  9. crontab学习

    概念 日志路径 /var/log/cron 配置路径 vi /etc/crontab 参考 https://www.cnblogs.com/kenshinobiy/p/7685229.html 问题 ...

  10. rest_framework的视图组件继承过哪些类?