加入收藏 | 设为首页 | 会员中心 | 我要投稿 焦作站长网 (https://www.0391zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

并发编程-多进程

发布时间:2021-01-08 06:44:09 所属栏目:系统 来源:网络整理
导读:一.进程 新进程的创建都是由一个 已经存在的进程 执行了一个 用于创建进程的系统调用 而创建的。 1.在UNIX中:fork会创建一个与父进程一摸一样的副本 2.在Windows:系统调用CreateProcess创建进程 进程的状态 程序遇到IO操作(Input、output),会阻塞,IO完成

p.daemon = True,必须在p.start()之前设置,因为一旦开启子进程,再设置也没用

from multiprocessing import Process
import time

def task(name):
    print(f‘{name} is running‘)
    time.sleep(2)
    print(f‘{name} is gone‘)



if __name__ == ‘__main__‘:
    p = Process(target=task,))  # 创建一个进程对象
    p.daemon = True  # 将p子进程设置成守护进程,只要主进程结束,守护进程马上结束(print(‘===主‘)一打印完,主进程中没有要执行的任务了,守护进程就死掉)
    p.start()
    time.sleep(1)
    print(‘===主‘)
示例1
from multiprocessing import Process
from threading import Thread
import time
def foo():
    print(123)
    time.sleep(2)
    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()
    print("main-------")    #打印完这句代码守护进程也跟着完了,不是等到整个流程结束守护进程才完

‘‘‘
main-------
456
end456

‘‘‘
示例2

三.进程同步(互斥锁)

强调:必须是lock.acquire()一次,然后 lock.release()释放一次,才能继续lock.acquire(),不能连续的lock.acquire()

(编辑:焦作站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读