`

Python中threading模块的join函数

 
阅读更多

oin的作用是众所周知的,阻塞进程直到线程执行完毕。通用的做法是我们启动一批线程,最后join这些线程结束,例如:

       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的原理就是依次检验线程池中的线程是否结束,没有结束就阻塞直到线程结束,如果结束则跳转执行下一个线程的join函数。

 

而py的join函数还有一个特殊的功能就是可以设置超时,如下:

Thread.join([timeout])

Wait until the thread terminates. This blocks the calling thread until the thread whose join() method is called terminates – either normally or through an unhandled exception – or until the optional timeout occurs.

 

也就是通过传给join一个参数来设置超时,也就是超过指定时间join就不在阻塞进程。而在实际应用测试的时候发现并不是所有的线程在超时时间内都结束的,而是顺序执行检验是否在time_out时间内超时,例如,超时时间设置成2s,前面一个线程在没有完成的情况下,后面线程执行join会从上一个线程结束时间起再设置2s的超时。

分享到:
评论

相关推荐

    Python中threading模块join函数用法实例分析

    ### Python中threading模块join函数用法实例分析 在Python多线程编程中,`threading`模块提供了创建和管理线程的能力。其中,`join`函数是一个非常重要的方法,用于控制主线程等待子线程的完成。下面将详细介绍`...

    python使用threading获取线程函数返回值的实现方法

    然而,Python的`threading`模块本身并不直接支持获取线程函数的返回值,这需要我们通过一些额外的方式来实现。以下将详细解释如何在Python中使用`threading`获取线程函数的返回值。 首先,我们需要理解`threading`...

    python多线程-threading模块.pdf

    1. getName(self):获取线程的名字,就是初始函数中的 name 的值。 2. setName(self, name):为线程设定名字 name。 3. start(self):开始线程的运行,每个线程对象只有调用最多一次。 4. run(self):方法表示线程是...

    Python THREADING模块中的JOIN()方法深入理解

    `JOIN()`方法在`main`函数中使用,它使得主线程等待所有子线程执行完毕后再继续执行。如果没有`JOIN()`,主线程可能在子线程完成之前就已经结束,导致无法看到子线程的完整输出。 第二个示例: ```python import ...

    Python线程threading模块用法详解

    在Python中,线程是并发执行任务的基本单位,`threading`模块为开发者提供了高级别的线程接口,使得多线程编程更加简单易用。 1. **线程对象**: - `threading.Thread` 类是创建线程的基础,通过实例化这个类并...

    Python中Threading用法详解

    Python中的Threading模块是用于实现多线程编程的,它基于Java的threading模块,但有一些关键的区别。本文将深入探讨Python Threading的使用方法,包括线程的基本概念、线程的创建、线程的生命周期以及同步机制。 1....

    python多线程-threading模块.docx

    Python中进行多线程编程时,`threading`模块是非常重要的工具之一。相比于较为基础的`thread`模块,`threading`模块提供了更为丰富的功能与灵活性。本文将详细介绍`threading`模块的基本概念、常用方法及其实现技巧...

    Python多线程threading join和守护线程setDeamon原理详解

    Python中的多线程是通过`threading`模块实现的,它允许我们同时执行多个任务,以提高程序的并发性能。在Python中,每个程序至少有一个主线程,其他线程称为子线程。线程间共享内存空间,可以互相操作数据。 `...

    python继承threading.Thread实现有返回值的子类实例

    `threading`模块是Python的标准库之一,它提供了创建和管理线程的功能。本文将详细介绍如何通过继承`threading.Thread`类来创建自定义的线程类,并实现线程执行后返回结果的功能。 #### 一、基本概念 1. **线程**...

    Python装饰器限制函数运行时间超时则退出执行

    在Python中,我们可以利用`signal`模块来实现基于信号的超时处理。`signal`模块提供了设置和处理信号的方法,可以用来监控进程并在特定条件下触发相应的操作。下面是一个使用`signal`模块来限制函数执行时间的示例:...

    Python中线程编程之threading模块的使用详解

    ### Python中线程编程之threading模块的使用详解 #### 一、引言 Python的`threading`模块是处理多线程的核心工具之一。它提供了丰富的API来创建和管理线程,使得开发者能够轻松地编写多线程程序。然而,Python的...

    Python多线程threading模块用法实例分析

    Python的多线程编程是通过`threading`模块来实现的,这个模块提供了一套相对高级的接口,使得开发者能够更方便地创建和管理线程。`threading`模块不仅包含线程的创建,还包括线程同步机制,如锁、事件、条件变量等。...

    Python进程Process模块-Python零基础入门教程.pdf

    Python提供了`multiprocessing`模块来支持进程的创建和管理,与`threading`模块类似,但`multiprocessing`模块适用于更需要独立性或者资源隔离的场景。导入`multiprocessing`模块后,可以通过`Process`类创建进程。 ...

    Python内置库:threading(多线程操作).docx

    线程的执行体通常定义在`target`参数指定的函数中。线程有以下几个重要属性和方法: - `daemon`: 线程的守护属性,如果设为`True`,则该线程被视为守护线程。当所有非守护线程结束后,程序会退出,无论守护线程是否...

    在Python中通过threading模块定义和调用线程的方法

    尽管如此,了解如何在Python中使用`threading`模块定义和调用线程仍然是非常重要的。 `threading`模块是Python标准库中的一个核心模块,提供了多线程的支持。下面将详细介绍如何使用`threading`模块创建和管理线程...

    Python多线程模块Threading用法示例小结

    Python的Threading模块是Python标准库中用于处理多线程编程的重要工具,它提供了一种在单个进程内部创建并发执行线程的方式。在多线程编程中,多个线程可以共享同一进程的资源,从而实现同时执行不同的任务,提高了...

    python中telnetlib模块的使用.docx

    Python中的telnetlib模块是一个内置库,用于实现Telnet协议,允许用户远程登录到其他设备,如Linux服务器,执行命令并获取输出。该模块提供了一个基础的接口来处理与远程服务器的交互,使得开发者能够方便地进行自动...

Global site tag (gtag.js) - Google Analytics