`

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函数用法,以实例形式较为详细的分析了join函数的功能与使用方法,需要的朋友可以参考下

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

    join方法,如果一个线程或者一个函数在执行过程中要调用另外一个线程,并且待到其完成以后才能接着执行,那么在调用这个线程时可以使用被调用线程的join方法。 复制代码 代码如下: #-*- encoding: gb2312 -*- import...

    浅谈Python中threading join和setDaemon用法及区别说明

    Python多线程编程时,经常会用到join()和setDaemon()方法,今天特地研究了一下两者的区别。 1、join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子...

    python 在threading中如何处理主进程和子线程的关系

    1.使用join函数后,主进程会在调用join的地方等待子线程结束,然后才接着往下执行。 join使用实例如下: import time import random import threading class worker(threading.Thread): def __init__(self): ...

    Python多线程编程(三):threading.Thread类的重要函数和方法

    主要介绍了Python多线程编程(三):threading.Thread类的重要函数和方法,本文讲解了线程名称、join方法、setDaemon方法等内容,需要的朋友可以参考下

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

    同一进程下的多个线程共享内存数据,多个线程之间没有主次...#下面定义两个线程调用test1这个函数,创建多线程使用如下语法,target后面跟函数名,args传递实参,实参需要以元组形式传递 start_time = time.time() t1

    Python线程中对join方法的运用的教程

    join 方法:阻塞线程 , 直到该线程执行完毕 因此 ,可以对join加一个超时操作 ... import threading from time import sleep def fun(): 在CODE上查看代码片派生到我的代码片 <span style=white-space:pre

    Python线程同步的实现代码

    本文介绍Python中的线程同步对象,主要涉及 thread 和 threading 模块。 threading 模块提供的线程同步原语包括:Lock、RLock、Condition、Event、Semaphore等对象。 线程执行 join与setDaemon 子线程在主线程...

    Python多进程multiprocessing.Pool类详解

    该进程可以允许放在Python程序内部编写的函数中。该Process对象与Thread对象的用法相同,拥有is_alive()、join([timeout])、run()、start()、terminate()等方法。属性有:authkey、daemon(要通过start()设置)、...

    详解python中自定义超时异常的几种方法

    针对超时异常,查询了python 相关文档,没有并发现完善的包来根据用户自定义的时间来抛出超时异常的模块。所以自己干脆自己来实现一个自定义的超时异常。目前找到了两种方式来实现超时异常的功能(signal.alarm()、...

    Python多线程编程简单介绍

    threading.Thread(group=None, target=None, name=None, args=(), kwargs={}) 这个构造器必须用关键字传参调用 – group 线程组 – target 执行方法 – name 线程名字 – args target执行的元组参数 – kwargs ...

    Python快速而美丽[v1.0.0][控制线程]

    Thread类提供了join()函数,它用来让一个线程等待另一个线程执行完成,当程序的执行过程中线程A调用了线程B的join()函数时,线程A将被阻塞,直到线程B执行完成。 该方法的设计主要用于将大的问题拆分成若干个小问题...

    python thread 并发且顺序运行示例

    复制代码 代码如下:#-*- coding:utf-8 -*- import threading import time def fun(name, ls_name, front_thread = None): ””’ 线程启动函数 通过front_thread来使用线程有序的运行 ”’ time.clock() time.sleep...

Global site tag (gtag.js) - Google Analytics