进程

from multiprocessing import Process
import time

def task(name):
    print('%s is  uynn'%name)
    time.sleep(3)
    print('%s is don'%name)

if __name__ == '__main__':
    #在Windows系统上,开启子进程的操作一定要放这下面 ,#比较常用
这个表示执行的是此代码所在的文件。 如果这个文件是作为模块被其他文件调用,不会执行这里面的代码。
只有执行这个文件时, if 里面的语句才会被执行。 这个功能经常可以用于进行测试。

    p=Process(target=task,args=('egon',))
    p.start()#向操作系统发送请求,操作系统会申请内存空间,然后把父进程的数据拷贝给子进程,作为子进程
    print('==========')

from multiprocessing import Process
import time
class My(Process):
    def __init__(self,name):
        super(My,self).__init__()
        self.name=name

    def run(self):
        print('%s is running'%self.name)
        time.sleep(3)
        print('%s is don '%self.name)
if __name__ == '__main__':
    p=My('egon')
    p.start()
    print('')

# 上面一种直接  常用
# 下面一种重用父类功能

from multiprocessing import Process
import time
x=10000
def task():
    time.sleep(3)
    global x
    x=0
    print('儿子死了',x)

if __name__ == '__main__':
        p=Process(target=task)
        p.start()
        time.sleep(5)
        print(x)
子进程和父进程是隔离开的  print(x)是

四,父进程等待子进程结束  用join
from multiprocessing import Process
import time,random#随机
x=1000
def task(n):
    print('%s is runibg' %n)
    time.sleep(n)
if __name__ == '__main__':
    #start_time=time.time()

    # p1=Process(target=task,args=(1,))
    # p2=Process(target=task,args=(2,))
    # p3=Process(target=task,args=(3,))
    # p1.start()
    # p2.start()
    # p3.start()
    #
    # p1.join()
    # p2.join()
    # p3.join()
    # print('阻',(time.time()-start_time))

用for 循环
from multiprocessing import Process
import time,random#随机
x=1000
def task(n):
    print('%s is runibg' %n)
    time.sleep(n)
if __name__ == '__main__':
    start_time=time.time()
    p_l=[]
    for i in range(1,4):
        p=Process(target=task,args=(i,))
        p_l.append(p)
        p.start()
    for p in p_l:
        p.join()
    print('',(time.time()-start_time))

 

 

 

posted @ 2018-04-24 23:18  嘿,  阅读(96)  评论(0编辑  收藏  举报