python全栈学习--day42

线程

什么是线程?

线程是CPU调度的最小单位。而进程是资源分配的最小单位,进程和线程是什么关系?

  线程是在进程中的一个执行单位,多进程 本质上开启的这个进程里就有一个线程

  多进程 本质上开启的这个进程里就有一个线程

  多线程 单纯的在当前进程中开启了多个线程

线程和进程的区别:

  线程的开启,销毁,任务切换的时间开销小

  在同一个进程中数据共享

  能实现并发,但不能脱离进程

  进程负责管理分配资源 线程负责执行代码

GIL 锁  ---全局解释器锁

同一时刻只能在有一个线程访问CPU----线程锁

Cpython解释器 ----copy jpython

python程序效率下降

高计算型-----多线程会导致程序的效率下降

高IO型的-----可以使用多线程

多进程

分布式计算-------celery

import time
from threading import Thread,currentThread,enumerate,activeCount

def func():
    print('-->',currentThread())
    time.sleep(0.1)
    print(123)

t = Thread(target=func)
t.start()
print(t.is_alive())
print(t.getName())
t.setName('t1')
print(t.getName())
# print(currentThread())
# print(enumerate())  # 你启动的活着的线程数 + 1(主线程)
print('-->',activeCount())  # 相当于len(enumerate())
# 守护线程
# 守护进程是等待主进程代码结束之后就结束
# 守护线程是等待主线程都结束之后才结束

import time
from threading import Thread,Lock
def func(lock):
    global n
    temp = n
    n = temp -1

n = 100
t_lst = []
lock = Lock()
for i in range(100):
    t = Thread(target=func,args=(lock,))
    t.start()
    t_lst.append(t)
for t in t_lst:t.join()
print(n)

  

  

猜你喜欢

转载自www.cnblogs.com/haowen980/p/9047916.html