首页 > 编程语言 > 详细

线程常用方法及常见特性

时间:2019-09-26 16:24:36      阅读:88      评论:0      收藏:0      [点我收藏+]
创建线程以及启动线程
技术分享图片
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

 

 

 

线程常用方法及常见特性

原文:https://www.cnblogs.com/dedadiao/p/11592378.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!