初识线程

Posted dymlnet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识线程相关的知识,希望对你有一定的参考价值。

进程与线程有很多相似之处

进程 执行中的程序
线程 轻量级的进程

一个进程可以包含多个线程

对于一个人来说,这个人就是一个进程。而一个人可以做很多事情,这每一件事情就是一个线程

进程包含线程,线程在进程中,一个进程内的线程共享这个进程内的代码等,所以这就导致了数据不安全的问题,所以引入了GIL机制(全局解释器锁)这是Cpython解释器加上的,他将进程内的所有代码等加上锁,一次只能由一个线程调用,这样让代码变得安全但是会导致无法并发执行,效率慢

线程:更加轻量级,线程是CPU调度的最小单位,进程是资源分配的最小单位

开启线程的效率要比开启进程快得多,而且cpu在线程之间的切换比在进程之间切换要快得多

在python中threading来调用线程模块

import os
import time
from threading import Thread

class MyThread(Thread):
    def run(self):
        print(aa,os.getpid())
for i in range(10):
    t = MyThread()
    t.start()

技术分享图片

在使用线程模块的时候不用加__name__ == ‘__main__‘

import time
import threading
def func(i):
    time.sleep(0.5)
    print(i,threading.currentThread().name,threading.currentThread().ident)
    # ident 线程id
for i in range(10):
    t = threading.Thread(target=func,args=(i,))
    t.start()

# print(len(threading.enumerate()))  # 返回正在运行着的线程列表
print(threading.activeCount())    #返回正在运行的线程的列表,和总量

 


以上是关于初识线程的主要内容,如果未能解决你的问题,请参考以下文章

Java初识方法

初识线程

进程线程区别,和线程初识

Java核心知识---初识线程

初识OpenGL 片段着色器(Fragment Shader)

初识OpenGL 片段着色器(Fragment Shader)