python多线程多进程讲解

时隔多天,又开始新的内容,欢迎大家评论,一起学习,一起进步。

进程与线程的关系:操作系统执行一个程序时,都会释放一个内存,而这个内存区域就可以说是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)

猜你喜欢

转载自blog.csdn.net/weixin_47514459/article/details/114796372