多进程

荒凉一梦 提交于 2019-11-29 06:52:09

1.开启进程的两种方法

第一种:

from multiprocessing import Process
import time
def tak(name):
    print('%s 进程' % name)
    time.sleep(2)
    print('%s 子进程 ' % name)

if __name__ =='__main__':
    p1 = Process(target=tak,args=(1,))   # 创建线程
    p2 = Process(target=tak,args=(2,))
    p3 = Process(target=tak,args=(3,))
    p4 = Process(target=tak,args=(4,))
    p5 = Process(target=tak,args=(5,))

    p1.start()   # 向操作系统发送请求执行命令,但是操作系统什么时候执行就是操作系统的事了
    p2.start()
    p3.start()
    p4.start()
    p5.start()
    print('主')

结果:

主   # 先运行的是主进程
1 进程
2 进程
4 进程
3 进程
5 进程      # 这里是会堵塞的,因为上面sleep了2秒,所有子进程都在这里进行堵塞了2秒后再进行打印,这里的结果为什么不是按顺序的,因为执行是操作系统进行执行的,你只能提交请求
1 子进程 
2 子进程 
4 子进程 
3 子进程 
5 子进程 

 

第二种:  这里自己写类进行继承Process

from multiprocessing import Process
import time
class Tak(Process):
    def __init__(self,name):
        super().__init__()         # 这里要加载Process中的方法
        self.name = name
 
    def run(self):              # 这里必须是run方法
        print('%s 进程' %  self.name)
        time.sleep(3)
        print('%s 子进程' %  self.name)

if __name__ == '__main__':
    p1 = Tak('1')    # 创建进程直接往自己的类里面进行传值就可以了
    p2 = Tak('2')
    p3 = Tak('3')
    p4 = Tak('4')
    p5 = Tak('5')

    p1.start()
    p2.start()
    p3.start()
    p4.start()
    p5.start()
    print('主')
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!