并发编程

开启多个子进程

import time,os
from multiprocessing import Process

def func(filename,content):
    with open(filename,'w') as f:
        f.write(content*10*'*')
        time.sleep(10)

if __name__ == '__main__':
    p_lst = []
    for i in range(5):
        p = Process(target = func,args=('info%s'%i,i))
        p_lst.append(p)
        p.start()
    for p in p_lst:p.join()# 之前的所有进程必须在这里执行完才能执行下面的代码
    # [p.join() for p in p_lst]
    print([i for i in os.walk(r'E:\code\day0831')])

 多进程之间的数据隔离问题

from multiprocessing import Process
import os

def func():
    global n
    n = 0
    print('pid :%s'%os.getpid(),n)

if __name__ == '__main__':
    n = 100
    p = Process(target=func)
    p.start()
    p.join()
    print('pid :%s'%os.getpid(),n)

 

from multiprocessing import Process

class MyProcess(Process):
    def __init__(self,arg1,arg2):
        super().__init__()
        self.arg1 = arg1
        self.arg2 = arg2

    def run(self):
        print(self.pid)
        print(self.name)
        print(self.arg1)
        print(self.arg2)

if __name__ == '__main__':
    p = MyProcess(1,2)
    p.start()
    p2 = MyProcess(3,4)
    p2.start()

# 自定义类 继承Process类
# 必须实现一个run方法,run方法中是在子进程中执行的代码

 

开启多进程的第二种方式

posted @ 2018-09-06 09:10  Woowo  阅读(98)  评论(0编辑  收藏  举报