Python 自定义进程

多进程对于全局变量访问,在每一个全局变量里面放入一个m变量,保证每个进程访问变量互不干扰

程序1

import os
from multiprocessing import Process
from time import sleep
m = 1   #不可变类型
list1 = []  #可变类型
def task1(s,name):
    global m    #对全局变量进行修改,需要声明global
    while True:
        sleep(s)
        m += 1
        list1.append(str(m)+'task1')
        print('这是任务一...........',m,list1)

def task2(s,name):
    global m    #对全局变量进行修改,需要声明global
    while True:
        sleep(s)
        m += 1
        list1.append(str(m)+'task2')
        print('这是任务二...........',m,list1)

number = 1
if __name__ == '__main__':
    print(os.getpid())
    print(os.getppid())
    #子进程
    p1 = Process(target=task1,name='任务1',args=(1,'aa'))
    p1.start()  #start()是开进程做这个动作,run是直接做这个动作

    p2 = Process(target=task2,name='任务2',args=(2,'bb'))
    p2.start()

    while True:
        sleep(1)
        m += 1
        print('------->main:',m)

结果1

14528
7864
------->main: 2
这是任务一........... 2 ['2task1']
------->main: 3
这是任务一........... 3 ['2task1', '3task1']
这是任务二........... 2 ['2task2']
------->main: 4
这是任务一........... 4 ['2task1', '3task1', '4task1']
------->main: 5
这是任务一........... 5 ['2task1', '3task1', '4task1', '5task1']
这是任务二........... 3 ['2task2', '3task2']
------->main: 6
这是任务一........... 6 ['2task1', '3task1', '4task1', '5task1', '6task1']
------->main: 7
这是任务一........... 7 ['2task1', '3task1', '4task1', '5task1', '6task1', '7task1']
这是任务二........... 4 ['2task2', '3task2', '4task2']
------->main: 8
这是任务一........... 8 ['2task1', '3task1', '4task1', '5task1', '6task1', '7task1', '8task1']
------->main: 9
这是任务一........... 9 ['2task1', '3task1', '4task1', '5task1', '6task1', '7task1', '8task1', '9task1']
这是任务二........... 5 ['2task2', '3task2', '4task2', '5task2']
------->main: 10

Python 自定义进程_第1张图片

Python 自定义进程

进程:自定义
Python 自定义进程_第2张图片
得加上def init(self,name)

程序

from multiprocessing import Process

class MyProcess(Process):
    def __init__(self,name):
        super(MyProcess, self).__init__()
        self.name = name
    #重写run()方法
    def run(self):
        n = 1
        while True:
            #print('进程名字:'+self.name)
            print('{}---------->自定义进程,n:{}'.format(n,self.name))
            n += 1

if __name__ == '__main__':
    p = MyProcess('小明')
    p.start()
    p1 = MyProcess('小红')
    p1.start()

部分结果

---------->自定义进程,n:小明
73743---------->自定义进程,n:小明

73744---------->自定义进程,n:小明
73745---------->自定义进程,n:小明
73513---------->自定义进程,n:小红73746---------->自定义进程,n:小明
73747---------->自定义进程,n:小明

73748---------->自定义进程,n:小明73514---------->自定义进程,n:小红
73515---------->自定义进程,n:小红
73516---------->自定义进程,n:小红

结果分析:
在start()会做两件事情:
1.开新的进程
2.run()

你可能感兴趣的:(Python,python)