Python 多线程初识

1.第一种使用方法

#!/usr/bin/env python
# --*-- encoding:utf-8 --*--
import time
import threading

def func(num):
    time.sleep(1)
    print(num)

th = []
for i in range(10):
    t = threading.Thread(target=func,args=(i,))
    th.append(t)
for i in th:
    i.start()
for i in th:
    i.join()

2.第二种使用方法

import time
import threading

class MyThread(threading.Thread):
    def __init__(self,arg):
        super(MyThread,self).__init__()
        self.arg =arg

    def run(self):
        time.sleep(1)
        print(self.arg)

th = []
for i in range(10):
    t = MyThread(i)
    th.append(t)

for i in th:
    i.start()

for i in th:
    i.join()

 3.线程常用方法

t.start() : 激活线程 ,线程启动

t.getName() : 获取线程的名称

t.setName() : 设置线程的名称

t.name : 获取或设置线程的名称

t.is_alive() : 判断线程是否为激活状态

t.isAlive() :判断线程是否为激活状态

t.setDaemon() 获取/设置是后台线程(默认前台线程(False))。(在start之前设置)
如果是后台线程,主线程执行过程中,后台线程也在进行,主线程执行完毕后,后台线程不论成功与否,均停止;
如果是前台线程,主线程执行过程中,前台线程也在进行,主线程执行完毕后,等待前台线程也执行完成后,程序停止 t.isDaemon() : 判断是否为守护线程 t.ident :获取线程的标识符。线程标识符是一个非零整数,只有在调用了start()方法之后该属性才有效,否则它只返回None。 t.join() :逐个执行每个线程,执行完毕后继续往下执行,该方法使得多线程变得无意义 t.run() :线程被cpu调度后自动执行线程对象的run方法

总结:

   1. 这种情况,主线程执行太快,先输出qqq, 如果你要按顺序执行,必须加上 i.join() ,让主线程等待子线程执行完毕后,接着执行

for i in th:
    i.start()
print('qqq')



posted @ 2017-05-05 15:55  1916  阅读(112)  评论(0)    收藏  举报