python的thread模块作用

线程

python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用

1. 使用threading模块

单线程执行

import threading
import time

def hello_for():
    print("你好 世界, 你好  中国")
    time.sleep(1)

if __name__ == "__main__":
    for i in range(5):
        t = threading.Thread(target=hello_for)
        t.start() #启动线程,即让线程开始执行

运行结果:

多线程执行

import threading
import time

def hello_for():
    print("你好 世界, 你好  中国")
    time.sleep(1)

if __name__ == "__main__":
    for i in range(5):
        t = threading.Thread(target=hello_for)
        t.start() #启动线程,即让线程开始执行

运行结果:

说明

  1. 可以明显看出使用了多线程并发的操作,花费时间要短很多
  2. 当调用start()时,才会真正的创建线程,并且开始执行

2. 主线程会等待所有的子线程结束后才结束

import threading
from time import sleep,ctime

def sing():
    for i in range(3):
        print("正在唱歌...%d"%i)
        sleep(1)

def dance():
    for i in range(3):
        print("正在跳舞...%d"%i)
        sleep(1)

if __name__ == ‘__main__‘:
    print(‘---开始---:%s‘%ctime())

    t1 = threading.Thread(target=sing)
    t2 = threading.Thread(target=dance)

    t1.start()
    t2.start()

    print(‘---结束---:%s‘%ctime())

运行结果:

3. 查看线程数量

import threading
from time import sleep,ctime

def sing():
    for i in range(3):
        print("正在唱歌...%d"%i)
        sleep(1)

def dance():
    for i in range(3):
        print("正在跳舞...%d"%i)
        sleep(1)

if __name__ == ‘__main__‘:
    print(‘---开始---:%s‘%ctime())

    t1 = threading.Thread(target=sing)
    t2 = threading.Thread(target=dance)

    t1.start()
    t2.start()

    while True:
        length = len(threading.enumerate())
        print(‘当前运行的线程数为:%d‘%length)
        if length<=1:
            break

        sleep(0.5)

运行结果:

原文地址:https://www.cnblogs.com/aydenwang/p/9427862.html

时间: 2024-10-11 00:46:32

python的thread模块作用的相关文章

python多线程-thread模块

thread 和 threading 模块都能够实现 python 中的多线程,一般而言使用 threading 更加方便,因为 thread 有很多的缺点,例如当主线程结束后,所以子线程都会强制终止掉,没有警告也没有正常的清理工作.所以一般情况下更推荐使用 threading 模块.不过出于学习的目的,我们两个模块都来看一下. 在进行代码学习之前,我们要先来了解 python 的 GIL,也就是全局解释器锁.这个锁保证了同一时刻只能有一个线程运行. 等等……我明明要使用多线程,为什么这个锁却保

python中thread模块中join函数

http://www.cnblogs.com/vingi/articles/2657790.html for i in range(10): t = ThreadTest(i) thread_arr.append(t) for i in range(10): thread_arr[i].start() for i in range(10): thread_arr[i].join() 简单说,阻塞进程指导线程执行完毕.通用的做法是我们启动一批线程,最后join这些线程结束. 总结:1 join方法

python的多线程编程 --- thread模块

1.使用thread模块(不推荐) 常用函数: 'start_new_thread(function,args,kwargs=None)':创建一个新的线程,并运行'function(args)' 'allocate_lock()': 创建锁对象 Lock object 'exit()': 提示线程退出 Lock的函数: 'acquire(wait=None)': 获取lock对象或等待wait时间 'locked()' 获得lock返回true,否则返回false 'release' :释放l

python标准库介绍——33 thread 模块详解

?==thread 模块== (可选) ``thread`` 模块提为线程提供了一个低级 (low_level) 的接口, 如 [Example 3-6 #eg-3-6] 所示. 只有你在编译解释器时打开了线程支持才可以使用它. 如果没有特殊需要, 最好使用高级接口 ``threading`` 模块替代. ====Example 3-6. 使用 thread 模块====[eg-3-6] ``` File: thread-example-1.py import thread import tim

thread模块—Python多线程编程

Thread 模块 *注:在实际使用过程中不建议使用 thread 进行多线程编程,本文档只为学习(或熟悉)多线程使用. Thread 模块除了派生线程外,还提供了基本的同步数据结构,称为锁对象(lock object,也叫原语锁.互斥锁.互斥和二进制信号量). 常用线程函数以及 LockType 锁对象的方法: 函数/方法 描述 thread 模块的函数   start_new_thread(function, args, kwargs=None) 派生一个新的线程,使用给定的 args 和可

PYTHON学习第二模块 python内置模块介绍

1 >>> import time 2 >>> time.time() 3 1491064723.808669 4 >>> # time.time()返回当前时间的时间戳timestamp(定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数)的方法,无参数 5 >>> time.asctime() 6 'Sun Apr 2 00:39:32 2017' 7 >>> # time.asctim

python之路--模块和包--景丽洋

python之路--模块和包 阅读目录 一 模块 3.1 import 3.2 from ... import... 3.3 把模块当做脚本执行 3.4 模块搜索路径 3.5 编译python文件 二 包 2.2 import 2.3 from ... import ... 2.4 __init__.py文件 2.5  from glance.api import * 2.6 绝对导入和相对导入 2.7 单独导入包 回到顶部 一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了pyth

python 的threading模块

其中Thread类 是你主要的线程类,可以创建进程实例.该类提供的函数包括: getName(self) 返回线程的名字 isAlive(self) 布尔标志,表示这个线程是否还在运行中 isDaemon(self) 返回线程的daemon标志,将线程放入后台执行 join(self, timeout=None) 程序挂起,直到线程结束,如果给出timeout,则最多阻塞timeout秒,主线程需等待子线程完成 run(self) 定义线程的功能函数 setDaemon(self, daemon

男神鹏:python 常用的模块。

os模块 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果. os.name:返回当前操作系统名称('posix', 'nt', 'os2', 'mac', 'ce' or 'riscos') os中定义了一组文件.路径在不同操作系统中的表现形式参数,如 os.sep(文件夹分隔符,windows中是 \ ) os.extsep(扩展名分隔符,windows中是 . ) os.pathsep(目录分隔符,windows中是 ; ) os.l