线程常用方法及常见特性

创建线程以及启动线程
from threading import Thread
import time


def func(arg):
    time.sleep(2)
    print(arg)

p1 = Thread(target=func, args=(1,))  #创建线程
p2 = Thread(target=func, args=(2,))
p1.start()      #启动线程
p2.start()
print(123)
View Code

守护线程:守护线程会等到主线程结束而结束。主线程会等到其他非守护线程结束而结束,注意:是否设为守护线程一定要在线程执行之前

from threading import Thread
import time


def func(arg):
    time.sleep(2)
    print(arg)

p1 = Thread(target=func, args=(1,))
p2 = Thread(target=func, args=(2,))
p1.setDaemon(True)         #参数为True 设置为守护线程,随主线程结束而结束
#p1.setDaemon(False)  
p1.start()
p2.setDaemon(True)
#p1.setDaemon(False)  
p2.start()
View Code

线程join方法:让主线程等待子线程结束在继续执行

from threading import Thread
import time


def func(arg):
    time.sleep(2)
    print(arg)

print('主线程1段')
p1 = Thread(target=func, args=(1,))
p2 = Thread(target=func, args=(2,))
p1.start()
p1.join()      #主线程等待此线程的结束在继续执行
print('主线程2段')
p2.start()
p2.join()
print('主线程3段')
print(123)
View Code

给线程设置别名

from threading import Thread,current_thread

def func(arg):
    t = current_thread()  #获取线程
    print(arg, t)
p1 = Thread(target=func, args=(1,))
p1.setName("第一个线程")   #为线程设置别名
p2 = Thread(target=func, args=(2,))
p2.setName("第二个线程")
p1.start()
p2.start()
View Code

Rlock:让多个线程有序的对数据进行操作

from threading import Thread,RLock
lock = RLock()      # 定义个锁
n = 10
def change(arg):
    lock.acquire()  #获取钥匙
    global n
    n = i
    print(n)
    lock.release()  #归还钥匙

for i in range(10):
    t = Thread(target=change, args=(i,))
    t.start()
View Code

 

 

 

posted @ 2019-09-26 16:04  果断定会白给  阅读(128)  评论(0)    收藏  举报