简单的线程说明

简介: 初始多线程    import threading def Process(arg): print(arg) Process(1) #表示只有一个人去执行Process这个函数 for i in range(10): #创建十个线程一次次执行Process这个函数 t = threading.Thread(target=Process, args=(i,)) t.start() 多线程,多线程有一个好的东西就是线程池。

初始多线程

  

import threading


def Process(arg):
    print(arg)

Process(1)     #表示只有一个人去执行Process这个函数



for i in range(10):     #创建十个线程一次次执行Process这个函数
    t = threading.Thread(target=Process, args=(i,))
    t.start()

多线程,多线程有一个好的东西就是线程池。

线程和进程的优缺点:

进程:

  优点:   同时利用多个CPU,能够同时进行多个操作。

  缺点:   耗费资源(重新开辟新的内存)

线程:

  优点:   共享内存,IO操作的时候,创造并发操作。

  缺点:   抢占资源。

进程不是越多越好,CPU个数 = 进程个数(有几个CPU最好创建几个进程)

线程也不是越多越好,具体案例,具体分析,(有几个线程创建几个线程,应为线程请求上下文时非常耗时)

 

进程和线程的目的是能够提高效率。

单线程和单进程的另一个名字:  主线程,主进程。

 

主线程可以创建子线程。

在计算机里边执行任务的最小单元是线程。

线程的应用的场景是在IO操作的时候,应为IO操作不用CPU,

IO密集型:   适合用线程,IO(不用CPU)

计算密集型:  适合用进程,计算(用CPU)

 

GIL: 在python里边叫全局解释器锁,锁一个进程里边的多个线程。

线程锁,threading.Rlock 和 threading.lock

 

import threading
import time

globals_num = 0
lock = threading.Rlock()

def Func():
    lock.acquire()       #获得锁
    global globals_num
    globals_num += 1
    time.sleep(1)    #等待一秒
    print (globals_num)
    lock.release()        #释放锁
for i in range(10):       #创建十个线程,每个线程都执行一遍Func函数
    t = threading.Thread(target=Func) 
    t.start()

 

    

相关文章
|
9月前
|
Java Linux API
线程的认识
线程的认识
|
5月前
线程18
线程18
42 4
|
5月前
|
监控 安全 Java
线程(一)
线程(一)
|
8月前
|
NoSQL Java 应用服务中间件
线程不够用怎么办?
### 并发编程挑战与解决方案概览 - 多线程导致线程爆炸,浪费CPU及可能导致JVM崩溃。线程池缓解问题,但仍有阻塞IO的效率低下。 - 非阻塞IO(如servlet3.1/Tomcat)和事件驱动(Reactive/Future)减少线程使用,但学习曲线陡峭。 - 轻量级线程如Netty、Spring Flux和虚拟线程(Java Loom)提升性能,但普及尚需时日。Java21引入虚拟线程,有望成未来性能关键。
262 10
|
9月前
|
存储 安全 Java
C++线程浅谈
C++线程浅谈
|
9月前
|
C#
C#线程初步
C#线程初步
46 0
|
Java Linux 调度
03.关于线程你必须知道的8个问题(中)
大家好,我是王有志,欢迎来到《Java面试都问啥?》。我们书接上回,继续聊Java面试中关于线程的问题。
90 1
03.关于线程你必须知道的8个问题(中)
|
传感器 存储 自动驾驶
(6)线程
(6)线程
127 0
|
C++
C++ | C++线程
c++创建线程的方式不止一种。
133 0

热门文章

最新文章