python代码实现一个多线程

首先明白进行与线程概念:

  • 什么是进程
    正在运行的一个应用程序就是一个进程,一个进行包括多个线程。进程会在所有线程崩溃时才结束。
  • 什么是线程
    a.一个进行要执行任务须要有线程(每个进行至少有一条线程)一个线程执行完了,线程就会自动结束。
    b.线程特点:
    线程是串行的。
    多线程(并行)同时执行多个任务
    c.多线程原理:
    CPU在空闲时间能够其它事情(所以某种意义上说多线程并行其实是一种假象,它其实是在多个线程之间来回切换),耗时基本是其它原因造成的,比如:下载都是耗时在网络上的。
    d.如果遇到希望在前面几个线程同时执行完成后在执行其它任务,就想到使用json.
    e.当多个线程对同一数据操作时,可能会出现数据混乱现象,因为由于time.sleep(5)造成的。
    f.多个线程对一个数据进行操作,一个线程会将数据读出来,还没来得急存。另一个子线程又去读。这个时候就会产生数据隐患。
    那么,多个线程怎么避免这个问题:
    解决方案:加锁
    Thtead-线程类,创建子线程
    Lock-锁(创建锁对象)
    release-解锁

Python3 通过两个标准库 _thread 和 threading 提供对线程的支持,由于_thread只是为了兼容python2的thread模块,所以推荐使用threading模块实现多线程。
threading提供了如下方法:

  • run(): 用以表示线程活动的方法。
  • start():启动线程活动。
  • join([time]): 等待至线程中止。
  • isAlive(): 返回线程是否活动的。
  • getName(): 返回线程名。
  • setName(): 设置线程名。
    Python中使用线程有两种方式:函数或者用类来包装线程对象。
    函数方式:
    导入threading包
    对象名= threading.Thread(target = 函数名) 创建线程对象
    对象名.start() 创建线程
    注:由于代码执行过快,为了显示效果,使用sleep延时执行。
    代码:
import threading
import time


def sing(num):
    for i in range(num):
        print("唱歌%d" % i)
        time.sleep(0.5)


def dance(num):
    for i in range(num):
        print("跳%d" % i)
        time.sleep(0.5)


def main():
    """创建启动线程"""
    t_sing = threading.Thread(target=sing, args=(5,))
    t_dance = threading.Thread(target=dance, args=(6, ))
    t_sing.start()
    t_dance.start()


if __name__ == '__main__':
    main()

执行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44490008/article/details/88559742