美文网首页
python中的多线程

python中的多线程

作者: AmaAnchor | 来源:发表于2019-03-06 15:41 被阅读0次

python中的多线程

基本操作

创建线程:

方式一:
使用_thread模块直接开启一个线程

import _thread
_thread.start_new_thread()

方式二:
继承一个线程类(可以自定义该线程类,继承threading.Thread)

 import threading
class my_thread(threading.Thread):
    def __init__(self[,…]):
        pass
    def run(self):
        pass
thread1=my_thread([,…])
thread1.start()

方式三:
使用threading.Thread

import threading
thread=threading.Thread(target=f())
thread.setDaemon(True)##默认为False
thread.start()

构造方法threading.Thread()

Thread(group=None, target=None, name=None, args=(), kwargs={})
  group: 线程组,目前还没有实现,库引用中提示必须是None;
  target: 要执行的方法;
  name: 线程名;
  args/kwargs: 要传入方法的参数。

实例方法

isAlive(): 返回线程是否在运行。正在运行指启动后、终止前。
get/setName(name): 获取/设置线程名。
start(): 线程准备就绪,等待CPU调度
is/setDaemon(bool): 获取/设置是后台线程(默认前台线程(False))。(在start之前设置)
start(): 启动线程。
join([timeout]): 阻塞当前上下文环境的线程,直到调用此方法的线程终止或到达指定的timeout(可选参数)

Daemon(守护)

设置Daemon属性为True的线程为主线程的守护线程。
顾名思义,即将该线程设置为主线程所守护的宝宝线程(xd)

在脚本运行过程,主线程中创建了子线程,当主线程结束时根据子线程daemon属性值的不同可能会发生下面的两种情况之一:

若某个子线程的daemon属性为False,主线程结束时会检测该子线程是否结束,如果该子线程还在运行,则主线程会等待它完成后再退出;
若某个子线程的daemon属性为True,主线程会在结束后时同时将该子线程也结束掉,不论该子线程是否完成
另。若某个子线程的属性为False,则只有子调用thread.start()之前才能设置该值

join函数

应用场景:
当主线程结束后,Daemon属性为True的线程也会结束,然而此时可能该线程还没有完成其任务。此时就需要join函数了
join函数的作用是使线程之间同步

for thread in threads:
            thread.join()

这样设置之后,主线程结束之后,会等待被join的线程结束,再退出程序

相关文章

  • 线程、进程

    多线程 在介绍Python中的线程之前,先明确一个问题,Python中的多线程是假的多线程!为什么这么说,我们先明...

  • python爬虫--day05

    多线程 在介绍Python中的线程之前,先明确一个问题,Python中的多线程是假的多线程!为什么这么说,我们先明...

  • Python多线程编程——多线程编程中的加锁机制

    如果大家对Python中的多线程编程不是很了解,推荐大家阅读之前的两篇文章:Python多线程编程——多线程基础介...

  • 浅析python的GIL

    Python中的GIL锁 在Python中,可以通过多进程、多线程和多协程来实现多任务。 在多线程的实现过程中,为...

  • Python-线程、线程池

    1. Python多线程 python3中常用的线程模块为:_thread(Python2中的thread)、th...

  • GIL 全局解释器锁

    GIL面试题如下 描述Python GIL概念,以及它对Python多线程的影响?在一个多线程抓取网页的程序中,多...

  • Python多线程变量优化—threadLocal

    Python多线程变量优化—threadLocal 再多线程的环境下,每个线程都有自己的数据。在多线程编程中应该尽...

  • python爬虫--day06

    进程 进程的概念 python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python...

  • 07-多线程和协程

    在介绍Python中的线程之前,先明确一个问题,Python中的多线程是假的多线程!为什么这么说,我们先明确一个概...

  • 浅谈python中的多线程和多进程(二)

    原创:hxj7 本文继续分享一个关于python多线程和多进程区别的例子 前文《浅谈python中的多线程和多进程...

网友评论

      本文标题:python中的多线程

      本文链接:https://www.haomeiwen.com/subject/pvztpqtx.html