当前位置 : 主页 > 编程语言 > python >

python thread

来源:互联网 收集:自由互联 发布时间:2021-06-25
原文: https://www.cnblogs.com/LY-C/p/9482766.html 多线程下共享同一进程资源 from threading import Threadt = Thread(target,args)target:表示调用对象,即线程要执行的任务args:表示调用对象的参数”元组

 原文:https://www.cnblogs.com/LY-C/p/9482766.html

多线程下共享同一进程资源

from threading import Thread
t = Thread(target,args)
target:表示调用对象,即线程要执行的任务
args:表示调用对象的参数”元组“

  方法

t.start()  #启动线程

t.join()   #等待线程执行结束在执行后面的代码

  单线程示例

from threading import Thread
import time

def func():
    print(‘子进程‘)

if __name__ == ‘__main__‘:
    t = Thread(target=func)
    t.start()
    time.sleep(1)
    print(‘主进程‘)

  多线程和多进程示例

from threading import Thread
from multiprocessing import Process
import os
import time
def son(n):
    pass

if __name__ == ‘__main__‘:
    start = time.time()
    for i in range(100):
        t = Thread(target=son,args=(‘线程‘,))
        t.start()
    print(time.time() - start)
    
    for i in range(100):
        p = Process(target=son,args=(‘进程‘,))
        p.start()
    print(time.time() - start)

  递归锁和互斥锁

from threading import Lock,RLock

Lock() #互斥锁,一把钥匙配一把锁
l = Lock()  #创建锁
l.acquire()  #上锁
l.acquire()  #死锁
print(123)
l.release()   #开锁
l.release()

RLock() #递归锁,可以有无止尽的锁,但是会有一把万能钥匙,同一进程下不会阻塞,不同进程会阻塞
l = RLock()  #创建锁
l.acquire()    #上锁
l.acquire()    #上锁,同一进程下不会死锁
print(123)   
l.release()    #开锁
l.release()    #开锁,上多少锁就开多少锁
网友评论