设为首页 加入收藏

TOP

Python--进程(四)
2019-01-02 00:08:58 】 浏览:239
Tags:Python-- 进程
("hello 进程 %d" % name ) time.sleep(1) if __name__ == '__main__': for i in range(10): p = Process(target=func, args=(i,)) p.start()
import time
from multiprocessing import Process

def func(name):
    print("hello 进程 %d" % name )
    time.sleep(0.1)

if __name__ == '__main__':
    p_lst = []
    for i in range(10):
        p = Process(target=func, args=(i,))
        p.start()
        p_lst.append(p)
    print("父进程执行中")
多个进程同时运行,再谈join方法(1)
import time
from multiprocessing import Process

def func(name):
    print("hello 进程 %d" % name )
    time.sleep(0.1)

if __name__ == '__main__':
    p_lst = []
    for i in range(10):
        p = Process(target=func, args=(i,))
        p.start()
        p_lst.append(p)
        p.join()
    print("父进程执行中")
多个进程同时运行,再谈join方法(2)

进程之间的数据隔离问题

from multiprocessing import Process

n = 100     #在windows系统中应该把全局变量定义在if __name__ == '__main__'之上就可以了
def work():
    global n
    n = 0
    print("子进程内:", n)


if __name__ == '__main__':
    p = Process(target=work)
    p.start()
    print("主进程内:", n)
进程间数据隔离的问题

守护进程

守护进程会随着主进程的结束而结束。

主进程创建守护进程

  其一:守护进程会在主进程代码执行结束后就终止

  其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have children

注意:进程之间是互相独立的,主进程代码运行结束,守护进程随即终止

import os
import time
from multiprocessing import Process

class Myprocess(Process):
    def __init__(self,person):
        super().__init__()
        self.person = person
    def run(self):
        print(os.getpid(),self.name)
        print('%s正在和女主播聊天' %self.person)


if __name__ == '__main__':
    p=Myprocess('小白')
    p.daemon=True #一定要在p.start()前设置,设置p为守护进程,禁止p创建子进程,并且父进程代码执行结束,p即终止运行
    p.start()
    time.sleep(10)  # 在sleep时查看进程id对应的进程ps -ef|grep id
    print('')
守护进程的启动
import time
from multiprocessing import Process

def foo():
    print(123)
    time.sleep(1)
    print("end123")

def bar():
    print(456)
    time.sleep(3)
    print("end456")


if __name__ == '__main__':
    p1=Process(target=foo)
    p2=Process(target=bar)

    p1.daemon=True
    p1.start()
    p2.start()
    time.sleep(0.1)
    print("main-------")#打印该行则主进程代码结束,则守护进程p1应该被终止.#可能会有p1任务执行的打印信息123,因为主进程打印main----时,p1也执行了,但是随即被终止.
主进程代码执行结束守护进程立即结束

 

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python装饰器(新年第一写) 下一篇Django之视图层

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目