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()