天天看点

【python】Python 线程调用定义每个线程要运行的函数创建列表接收t.start()对象内容。循环3次

简介:

  Python 线程可以通过主线程,调用线程来执行其他命令,

  为Python提供更方便的使用。  

  • 并发线程测试# 命令调用方式

    import threading,time

    # 定义每个线程要运行的函数

    def run(n):

    print("task",n)

    time.sleep(1)

    # 生成一个线程实例target=目标,args=参数

    t1 = threading.Thread(target=run,args=("t1",))

    t2 = threading.Thread(target=run,args=("t2",))

    #启动线程

    t1.start()

    t2.start()

     import threading,time

    # 继承threading.Thread

    class MyThread(threading.Thread):

    # 重写父类的构造函数

    def __init__(self,n):

    # 重构构造函数

    super(MyThread.self).__init__()

    self.n = n

    # 定义每个线程要运行的函数

    def run(self):

    print("running task ",self.n)

    # 实例化

    t1 = MyThread("t1")

    t2 = MyThread("t2")

    # 启动线程

    t1.start()

    t2.start()import threading,time

    def run(n):

    print("task",n)

    time.sleep(1)

    start_time = time.time()

    for i in range(50):

    t = threading.Thread(target=run,args=("t-%s"%i,))

    t.start()

    t.join()

    # 注:默认主线程不会等子线程执行完在执行。

    # 注:串行:等待前一个命令完全执行完,在执行下一条命令。

    # 注:实例.join() #wait() 等待执行完毕执行下条命令,可实现串行。

  • 并发类的继承测试
  • 实现并发串行执行命令
  • 实现主线程等待子线程执行完毕后在往下执行import threading,time

    # 定义每个线程要运行的函数

    def run(n):

    print("task",n)

    time.sleep(2)

    # 测试执行结果后的用时时间

    start_time = time.time()

    # 创建列表接收t.start()对象内容。

    t_objs = []

    # 循环50次

    for i in range(3):

    # 生成一个线程实例target=目标,args=参数

    t = threading.Thread(target=run,args=("t-%s"%i,))

    # 启动线程 调用run

    t.start()

    # 执行结果添加到列表

    t_objs.append(t)

    # 将每个循环t对象一次进行等待。

    for t in t_objs:

    # 每循环一次等待一次

    t.join()

    # 打印用时时间

    print("cost:",time.time() - start_time)

  • 守护进程

    守护线程:依赖于主线程存在的,为主线程工作。

      功能:设置成守护线程后,主线程关闭,守护线程也连带关闭。

    使用场景:socketserver 每一个链接过来,socketserver就会启动一

         个线程,当服务端关闭时,需要关闭其他线程,就可以用

         到守护线程,关闭。

     `

    import threading,time

定义每个线程要运行的函数

def run(n):

print("task",n)           

复制

time.sleep(5)           

复制

创建列表接收t.start()对象内容。

#t_objs = []

循环3次

for i in range(3):

# 生成一个线程实例target=目标,args=参数           

复制

t = threading.Thread(target=run,args=("t-%s"%i,))           

复制

# 要在start之前设置           

复制

# 把当前线程设置为守护线程           

复制

t.setDaemon(True)           

复制

# 启动线程 调用run           

复制

t.start()           

复制

复制

注:所有程序执行完毕,还有一个join等待,执行完毕退出程序。

注:主线程MainThread,线程Thread。

threading.current_thread() #测试当前活动的线程类型。

threading.active_count() #测试当前活动的线程数。