• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python THREADING模块中的JOIN()方法深入理解

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

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了python threading模块,python threading,python3 threading,python中threading,threading模块等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

看了oschina上的两个代码,受益匪浅。其中对join()方法不理解,看python官网文档的介绍:
join([timeout]):等待直到进程结束。这将阻塞正在调用的线程,直到被调用join()方法的线程结束。(好难翻译,应该是这个意思)

哈哈,这个易懂。
join方法,如果一个线程或者一个函数在执行过程中要调用另外一个线程,并且待到其完成以后才能接着执行,那么在调用这个线程时可以使用被调用线程的join方法。
#-*- encoding: gb2312 -*-
import string, threading, time
 
def thread_main(a):
    global count, mutex
    # 获得线程名
    threadname = threading.currentThread().getName()
 
    for x in xrange(0, int(a)):
        # 取得锁
        mutex.acquire()
        count = count + 1
        # 释放锁
        mutex.release()
        print threadname, x, count
        time.sleep(1)
 
def main(num):
    global count, mutex
    threads = []
 
    count = 1
    # 创建一个锁
    mutex = threading.Lock()
    # 先创建线程对象
    for x in xrange(0, num):
        threads.append(threading.Thread(target=thread_main, args=(10,)))
    # 启动所有线程
    for t in threads:
        t.start()
    # 主线程中等待所有子线程退出
    for t in threads:
        t.join() 
 
if __name__ == '__main__':
    num = 4
    # 创建4个线程
    main(4)
###################################################################
#-*- encoding: gb2312 -*-
import threading
import time
 
class Test(threading.Thread):
    def __init__(self, num):
        threading.Thread.__init__(self)
        self._run_num = num
 
    def run(self):
        global count, mutex
        threadname = threading.currentThread().getName()
 
        for x in xrange(0, int(self._run_num)):
            mutex.acquire()
            count = count + 1
            mutex.release()
            print threadname, x, count
            time.sleep(1)
 
if __name__ == '__main__':
    global count, mutex
    threads = []
    num = 4
    count = 1
    # 创建锁
    mutex = threading.Lock()
    # 创建线程对象
    for x in xrange(0, num):
        threads.append(Test(10))
    # 启动线程
    for t in threads:
        t.start()
    # 等待子线程结束
    for t in threads:
        t.join()
</div>

在程序中,最后join()方法的调用就明白了,是主进程挨个调用子线程的join()方法。当四个线程都执行完毕后,主线程才会执行下面的代码,在这里也就是退出了。
相对应的在网上一起找到的另一个方法:
3.守护进程

setDaemon()

这个方法基本和join是相反的。当我们在程序运行中,执行一个主线程,如果主线程又创建一个子线程,主线程和子线程就分兵两路,分别运行,那么当主线程完成想退出时,会检验子线程是否完成。如果子线程未完成,则主线程会等待子线程完成后再退出。但是有时候我们需要的是,只要主线程完成了,不管子线程是否完成,都要和主线程一起退出,这时就可以用setDaemon方法啦

</div>

您可能想查找下面的文章:

  • 在Python中通过threading模块定义和调用线程的方法
  • Python中线程编程之threading模块的使用详解
  • 举例详解Python中threading模块的几个常用方法
  • Python中threading模块join函数用法实例分析
  • python中threading超线程用法实例分析
  • python threading模块操作多线程介绍
  • python threading模块操作多线程介绍
  • Python多线程编程(三):threading.Thread类的重要函数和方法
  • Python多线程编程(一):threading模块综述
  • Python THREADING模块中的JOIN()方法深入理解

相关文章

  • Python中设置变量作为默认值时容易遇到的错误
  • python远程登录代码
  • python判断给定的字符串是否是有效日期的方法
  • python列表操作使用示例分享
  • python 随机数生成的代码的详细分析
  • PYTHON正则表达式 re模块使用说明
  • python列表去重的二种方法
  • Python采用raw_input读取输入值的方法
  • python实现颜色空间转换程序(Tkinter)
  • 12步教你理解Python装饰器

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 编写Python的web框架中的Model的教程
    • Python中super()函数简介及用法分享
    • Python实现设置windows桌面壁纸代码分享
    • python读写json文件的简单实现
    • 剖析Python的Twisted框架的核心特性
    • Python解决鸡兔同笼问题的方法
    • python实现读取命令行参数的方法
    • Python使用scrapy采集时伪装成HTTP/1.1的方法
    • python获取本机mac地址和ip地址的方法
    • Python求解平方根的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有