时隔多天,又开始新的内容,欢迎大家评论,一起学习,一起进步。
进程与线程的关系:操作系统执行一个程序时,都会释放一个内存,而这个内存区域就可以说是xxx进程,进程里有许多的线程工作(进程是资源单位,线程是执行单位,一个进程至少要有一个线程,启动某一个程序默认都有一个主线程)
#单线程
def func():
for i in range(10):
print("func",i)
if __name__ == '__main__':
func()
for i in range(10):
print('main',i)
现象:(线性关系,一个完成,到另外一个)
多线程写法(一)
#多线程
from threading import Thread #线程类
def func():
for i in range(1000):
print('func',i)
if __name__ == '__main__':
t=Thread(target=func)#创建新线程
t.start()#开始执行线程(多线程状态为可开启,具体什么时候能执行看upu)
for i in range(1000):
print('main',i)
现象:(一起进行)
多进程写法(二)
#多线程
from threading import Thread
class MYThread(Thread):
def run(self): #固定的,run()作用:当线程被执行时,执行run()
for i in range(1000):
print('子线程',i)
if __name__ == '__main__':
t=MYThread()
#t.run()#不能,这是方法调用
t.start() #开始启动线程
for i in range(1000):
print('主线程',i)
现象:
多线程参数写法:
from threading import Thread #线程类
def func(name):
for i in range(1000):
print(name,i)
if __name__ == '__main__':
t1=Thread(target=func ,args=("参数1",))#传递参数必须是元组
t1.start()#开始执行线程(多线程状态为可开启,具体什么时候能执行看upu)
t2 = Thread(target=func, args=("参数2",)) # 创建新线程
t2.start()
现象:
多进程:(一般少用,cpu不够用)
方法一
#多进程
from multiprocessing import Process
def func():
for i in range(10):
print('子进程',i)
if __name__ == '__main__':
p=Process(target=func)#创建进程
p.start()#开启进程
for i in range(10):
print('主进程',i)
现象:
方法二
#多进程
from multiprocessing import Process
class MYThread(Process):
def run(self):
for i in range(1000):
print('子进程', i)
if __name__ == '__main__':
p= MYThread()#实例化对象
p.start() # 开始启动线程
for i in range(1000):
print(' 主进程', i)