• 操作系统 进程 并发


    -------------------------------------越努力的人,越幸运;如果你觉得你已经足够努力了,还是学不好,那就是方法不对,多寻求更好的方法,更好的解决方案.

    # # ------------------------------------------------------------------------------------------------------------#

    # # --------------[创建进程]--------------
    import time
    import os
    from multiprocessing import Process


    def func1():
    time.sleep(2)
    print('我是func1')

    def func2():
    time.sleep(3)

    print('我是func2')
    print('子进程的pid',os.getpid()) #查看当前进程的id
    print('子进程的父进程>>>',os.getppid()) #查看父进程的id

    if __name__ == '__main__':

    print('主进程的pid',os.getpid())
    print('当前主进程的父进程>>>',os.getppid())
    start_time = time.time()
    p = Process(target=func2,)
    p.start() #告诉操作系统,我这边准备好了,你帮我创建并执行这个进程

    func1()
    end_time = time.time()
    dif_time = end_time - start_time
    print('>>>>',dif_time)
    p.join()

    # func1()
    # func2()



    # # --------------[pid name]--------------
    from multiprocessing import Process
    import time
    import random
    import os
    class Piao(Process):
    def __init__(self):
    # self.name=name
    # super().__init__() #Process的__init__方法会执行self.name=Piao-1,
    # #所以加到这里,会覆盖我们的self.name=name

    #为我们开启的进程设置名字的做法
    super().__init__()
    # self.name=name

    def run(self):
    # print('子进程id',os.getpid())

    print('%s is piaoing' %self.name)
    time.sleep(random.randrange(1,3))
    print('%s is piao end' %self.name)
    if __name__ == '__main__':

    p=Piao()
    p.start()
    print('开始')
    print(p.pid) #查看pid
    print(p.name) #查看pid
    print(os.getpid())

    # # --------------[04 验证进程之间是空间隔离的]--------------
    import time
    from multiprocessing import Process


    num = 100
    def func1():
    global num
    time.sleep(1)
    num = num - 1
    print('>>>>>>>>',num)
    # time.sleep(0.02)
    # print('来玩啊')
    # def func2()

    if __name__ == '__main__':

    p_list = []
    for i in range(10):
    p = Process(target=func1,)
    p.start()
    p.join()
    p_list.append(p)

    for pp in p_list:
    pp.join()
    # print(num)
    # p.join()
    # p.join()

    print('主进程的num>>>>>',num)
    print('主进程结束')


    # # --------------[terminate,is_alive]--------------
    #进程对象的其他方法一:terminate,is_alive
    from multiprocessing import Process
    import time
    import random

    class Piao(Process):
    def __init__(self,name):
    self.name=name
    super().__init__()

    def run(self):
    print('%s is 打飞机' %self.name)
    time.sleep(2)
    # s = input('???') #别忘了再pycharm下子进程中不能input输入,会报错EOFError: EOF when reading a line,因为子进程中没有像我们主进程这样的在pycharm下的控制台可以输入东西的地方
    print('%s is 打飞机结束' %self.name)

    if __name__ == '__main__':
    p1=Piao('太白')
    p1.start()

    p1.terminate()#关闭进程,不会立即关闭,有个等着操作系统去关闭这个进程的时间,所以is_alive立刻查看的结果可能还是存活,但是稍微等一会,就被关掉了
    print(p1.is_alive()) #结果为True
    print('等会。。。。')
    time.sleep(1)
    print(p1.is_alive()) #结果为False

  • 相关阅读:
    Highcharts 连续的堆积面积图
    jQuery--each遍历使用方法
    C# 常用小技巧
    JSON对象遍历方法
    T-SQL生成X个不重复的Y位长度的随机数
    SQLServer如何快速生成100万条不重复的随机8位数字
    ftp和http断点续传及下载的Delphi实现
    Delphi与Windows 7下的用户账户控制(UAC)机制
    Win7/Win10下的进程操作
    运行Delphi 2007 IDE提示无法打开"EditorLineEnds.ttr"文件
  • 原文地址:https://www.cnblogs.com/dealdwong2018/p/10029666.html
Copyright © 2020-2023  润新知