ʕ·͡ˑ·ཻʔ Daisy 🐾 ◟̆◞̆♥︎
Zou-Wang
点击头像关注

三っ•̀.̫•́)っ 我去宇宙了 ⁽⁽ଘ( ˊᵕˋ )ଓ⁾⁾

线程

线程

在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程,cpu真正的执行单位是线程,在工厂中,每个车间都有房子,而且每个车间默认就有一条流水线

操作系统===》工厂

进程===》车间

线程===》流水线

进程运行===》电源

相关知识点:

线程:cpu最小的执行单位

进程:资源集合/资源单位

线程运行=运行代码

进程运行=各种资源+线程

右键运行:

申请内存空间,先把解释器丢进去,并且把代码丢进去(进程做的),运行代码(线程)

进程和线程的区别

线程===》单指代码的执行过程

进程===》资源的申请与销毁的过程

特点:

进程内存空间彼此隔离,同一个进程下的线程共享资源

进程和线程的创建速度

进程需要申请资源开辟空间,慢

线程只是告诉操作系统一个执行方案,快

线程开启的两种方式之函数

from threading import Thread
import time
def task():
    print('线程 start')
    time.sleep(2)
    print('线程 end')


if __name__ == '__main__':
    t = Thread(target=task)
    t.start()  # 告诉操作系统开一个线程  .

    print('主')

线程开启的两种方式之类

from threading import Thread
import time
# 进程等待所有线程结束才会结束

class Myt(Thread):
    def run(self):
        print('子线程 start')
        time.sleep(5)
        print('子线程 end')

t = Myt()
t.start()
print('主线程')

子线程vs子进程创建速度

from threading import Thread
from multiprocessing import Process
import time

def task(name):
    print(f'{name} is running')
    time.sleep(2)
    print(f'{name} is end')


if __name__ == '__main__':
    t = Thread(target=task,args=('子线程',))
    p = Process(target=task,args=('子进程',))
    # t.start()
    p.start()
    print('主')
    '''  
开启子线程的打印效果:

子线程 is running
主
子线程 is end

开启子进程打印效果:

主
子进程 is running
子进程 is end  
    '''

子线程共享资源

from threading  import Thread
import time,os

x = 100
def task():
    global x
    x = 50
    print(os.getpid()) # 5204


if __name__ == '__main__':

    t = Thread(target=task)
    t.start()
    time.sleep(2)
    print(x) # 50
    print(os.getpid())

线程的join方法

from threading import Thread
import time
def task():
    print('子线程 start')
    time.sleep(2)
    print('子线程 end')

t = Thread(target=task)
t.start()
t.join() # 等待子线程运行结束
print('主线程')

posted @ 2019-09-18 14:42  没忘  阅读(146)  评论(0编辑  收藏  举报