python-线程二(创建线程)

一、在python中的一些线程相关的模块和包:

  _thread  threading  Multiprocessing

 

二、threading.Thread 说明

  1)作用:创建线程

  2)语法

# 构造方法
help(threading.Thread)
__init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None) # 参数说明 group:进程所属组,基本不用。 target:表示调用对象,一般为函数。 args:表示调用对象的位置参数元组。 name:进程别名。 kwargs:表示调用对象的字典。 daemon:表示守护线程 # 属性说明 t.name # 线程名称 t.ident # 线程标识符,如果未启动为None t.daemon # 是否为守护线程 # 方法说明 t.getName() # 获取线程名称 t.setName('test') # 设置线程名称 t.isDaemon() # 判断是否是守护线程 t.setDaemon(True) # 设置为守护线程 t.start() # 开启守护线程,为就绪状态,默认去调用该线程run方法 t.join([timeout]):# 主进程等待t(子进程)终止(强调:是主进程处于等的状态,而t是处于运行的状态)。timeout是可选的超时时间。 t.is_alive() # 判断线程的状态

 

三、创建线程

  1)创建单线程和多线程

方法1:直接实例化Thread
from threading import Thread
import time


def run(a=None, b=None):
    time.sleep(1)
    print(a, b)


t = Thread(target=run, args=("this is a", "thread"))  # 启动一个子线程,此时线程是新建状态
print(t.getName())  # 获得线程对象名称
print(t.isAlive())  # 判断线程是否还活着,在start后,在执行完毕前调用isAlive()才会返回True
t.start()  # 启动线程
t.join()  # 主线程等待子线程t执行结束
print('Done')

注意:这个方式任务逻辑需要新建一个函数来写。

方法2:使用继承
from threading import Thread import time class MyThread(Thread): def __init__(self, a): super().__init__() # 调用父类的构造方法 self.a = a def run(self): time.sleep(self.a) print("sleep :", self.a) t1 = MyThread(2) t2 = MyThread(4) t1.start() t2.start() t1.join() t2.join() 注意:通过继承Thread来创建进程,要把任务逻辑写在run里面

   2)创建线程池

import time
from multiprocessing.dummy import Pool as ThreadPool  # ThreadPool表示给线程池取一个别名ThreadPool


def run(fn):
    time.sleep(2)
    print(fn, end="")


if __name__ == '__main__':
    testFL = [1, 2, 3, 4, 5]
    pool = ThreadPool(10)  # 创建10个容量的线程池并发执行
    pool.map(run, testFL)
    pool.close()
    pool.join()
    print('Done!')

 

posted @ 2020-03-28 16:48  海澜时见鲸  阅读(347)  评论(0)    收藏  举报