zoukankan      html  css  js  c++  java
  • Python3之并发(二)---线程的创建、启动

    一、线程的创建、启动

    有关线程的一些注意

    程序运行时默认创建一个主线程,主线程的线程执行体就是程序中的主程序,即没有放在任何函数中的代码块
    主线程默认名为 MainThread,用户启动的多个线程名字依次是 Thread-1, Thread-2,...
    
    当线程被创建后,必须通过调用线程的 start() 方法来启动线程,一旦线程启动了,无论是正常终止还是引发了未捕获的异常,它都处于死亡状态

    创建线程的两种方式

    直接调用线程构造函数threading.Thread()
    
    继承Thread类重写run()方法

    1 直接调用线程构造函数 threading.Thread() 创建线程

    import threading, time
    
    #线程要执行的方法
    def action(max, delay):
        for i in range(max):
            #子线程休眠
            time.sleep(delay)
            print(threading.current_thread().name+'线程第'+str(i)+'次循环	'+time.asctime())
    
    for i in range(10):
        #主线程休眠
        time.sleep(1) 
        print(threading.current_thread().name+'线程第'+str(i)+'次循环	'+time.asctime())
        if i == 5 :
            #启动两个子线程,都调用 action() 函数,休眠时间不同
            thread_1 = threading.Thread(target=action, args=(10,1), name='thread_1')
            thread_2 = threading.Thread(target=action, args=(10,2), name='thread_2')
            thread_1.start()
            thread_2.start()
    print('主线程执行完!	'+time.asctime())

    2 继承Thread类重写run()方法创建线程

    只重写Thread类的 __init__() 和 run() 方法

    import threading, time
    
    class my_Thread(threading.Thread):
        def __init__(self, delay):
            threading.Thread.__init__(self)
            self.i = 0
            self.delay = delay
    
        def run(self):
            while self.i < 10:
                time.sleep(self.delay)
                print(threading.current_thread().name+'线程第'+str(self.i)+'次循环	'+time.asctime())
                self.i += 1
    
    print(threading.current_thread().name+'线程开始	'+time.asctime())
    mythread_1 = my_Thread(2)
    mythread_2 = my_Thread(3)
    mythread_1.setName('mythread_1') 
    mythread_2.setName('mythread_2') 
    mythread_1.start()
    mythread_2.start()
    #主线程休眠
    time.sleep(4)
    print(threading.current_thread().name+'线程结束	'+time.asctime())
  • 相关阅读:
    ORM
    数据库事务课上代码
    数据存储——SQLite数据库存储——API
    事务的ACID特性
    数据库练习3
    数据存储——SQLite数据库存储——SQL语句——DML数据操作语言、内置函数聚合函数
    数据库练习2
    数据存储——SQLite数据库存储——SQL语句——DQL数据查询语言
    数据库练习
    《那些事之Log4j》什么是log4j?【专题一】
  • 原文地址:https://www.cnblogs.com/gudanaimei/p/14408815.html
Copyright © 2011-2022 走看看