简述python(threading)多线程

Posted jum-bolg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简述python(threading)多线程相关的知识,希望对你有一定的参考价值。

一.概述

   import threading

   调用 t1 = threading.Thread(target=function , args=(,))

Thread类的实例方法

# join():在子线程完成运行之前,这个子线程的父线程将一直被阻塞。

# setDaemon(True):
        ‘‘‘
         将线程声明为守护线程,必须在start() 方法调用之前设置,如果不设置为守护线程程序会被无限挂起。

         当我们在程序运行中,执行一个主线程,如果主线程又创建一个子线程,主线程和子线程 就分兵两路,分别运行,那么当主线程完成

         想退出时,会检验子线程是否完成。如果子线程未完成,则主线程会等待子线程完成后再退出。但是有时候我们需要的是只要主线程

         完成了,不管子线程是否完成,都要和主线程一起退出,这时就可以 用setDaemon方法啦‘‘‘


import threading
from time import ctime,sleep
import time

def Music(name):

        print ("Begin listening to name. time".format(name=name,time=ctime()))
        sleep(3)
        print("end listening time".format(time=ctime()))

def Blog(title):

        print ("Begin recording the title. time".format(title=title,time=ctime()))
        sleep(5)
        print(‘end recording time‘.format(time=ctime()))


threads = []


t1 = threading.Thread(target=Music,args=(‘FILL ME‘,))
t2 = threading.Thread(target=Blog,args=(‘‘,))

threads.append(t1)
threads.append(t2)

if __name__ == ‘__main__‘:

    #t2.setDaemon(True)

    for t in threads:

        #t.setDaemon(True) #注意:一定在start之前设置
        t.start()

        #t.join()

    #t1.join()
    #t2.join()    #  考虑这三种join位置下的结果?

    print ("all over %s" %ctime())

其他实例方法
Thread实例对象的方法
# isAlive(): 返回线程是否活动的。 # getName(): 返回线程名。 # setName(): 设置线程名。 threading模块提供的一些方法: # threading.currentThread(): 返回当前的线程变量。 # threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。 # threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

GIL(全局解释器锁)

以上是关于简述python(threading)多线程的主要内容,如果未能解决你的问题,请参考以下文章

JAVA多线程继承Thread 与实现Runnable接口的相关疑问

多线程!!

java 如何实现多线程

python多线程thread.start_new_thread传参的问题

Python3多线程_thread模块的应用

python多线程与threading模块