线程:是操作系统最小的调度单位,是一串指令的集合
进程:eg:QQ要以一个整体的形式暴露给操作系统管理,里面包含对各种资源的调用,内存对各种资源管理的集合叫做进程
进程操作cpu必须先创建一个线程,只有线程才能操作cpu
所一在同一进程中的线程是共享同一片内存空间的,但是两个线程不能在同一块空间里运作
主线程和子线程运行是并行的
import threading import time def run(name): print('in the %s' % name) time.sleep(2)
首先我们设置一个函数我们开启两个线程
t2 = threading.Thread(target=run,args=('t2',)) t1 = threading.Thread(target=run,args=('t1',)) t1.start() t2.start()
你就会看到 并行的结果了,可是出现了一个问题 我们向要在进程结束后使用其结果该怎么办呢?
我们可以使用join哦
star_time = time.time() r_obj = [] for i in range(50): t = threading.Thread(target=run, args=('t %s' % i, )) t.setDaemon(True) # 把子线程设置成守护线程 t.start() r_obj.append(t) for i in r_obj: i.join()
可以看到我们把每一个进程丢进了数组,来是他们结束那么后面我们就可以达到效果了
顺便提一下我们还有一个使用类的方法来开多进程哦
# class Mythraed(threading.Thread): # def __init__(self,name): # super(Mythraed, self).__init__() # self.name = name # # def run(self): # print('run the %s',self.name) # time.sleep(2) # t1 = Mythraed('t1') # t2 = Mythraed('t2') # t1.start() # t2.start()