• 4-1 多进程练习题


    四 练习题

    1、思考开启进程的方式一和方式二各开启了几个进程?

    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)
    

    3、基于多进程实现并发的套接字通信?

    4、思考每来一个客户端,服务端就开启一个新的进程来服务它,这种实现方式有无问题?

    三 练习题

    1、改写下列程序,分别别实现下述打印效果

    from multiprocessing import Process
    import time
    import random
    
    def task(n):
        time.sleep(random.randint(1,3))
        print('-------->%s' %n)
    
    if __name__ == '__main__':
        p1=Process(target=task,args=(1,))
        p2=Process(target=task,args=(2,))
        p3=Process(target=task,args=(3,))
    
        p1.start()
        p2.start()
        p3.start()
    
        print('-------->4')
    

    效果一:保证最先输出-------->4

    -------->4
    -------->1
    -------->3
    -------->2
    

    效果二:保证最后输出-------->4

    -------->2
    -------->3
    -------->1
    -------->4
    

    效果三:保证按顺序输出

    -------->1
    -------->2
    -------->3
    -------->4
    

    2、判断上述三种效果,哪种属于并发,哪种属于串行?

    二 练习题

    思考下列代码的执行结果有可能有哪些情况?为什么?

    from multiprocessing import Process
    
    import time
    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()
        print("main-------")



  • 相关阅读:
    VC++对话框笔记
    STL中用erase()方法遍历删除元素
    VC++中不小心选错工程类型的解决办法
    directX中常用的数学计算
    VC++中string、char* 转换为LPCSTR
    判断空间上点是否在直线上
    vc6.0插件
    VC++常用定义(如SAFE_DELETE等)
    关于控件的AutoSize属性影响界面布局的问题解决
    C#判断日期是否正确(1900~今年,月份,天数)
  • 原文地址:https://www.cnblogs.com/venicid/p/8878970.html
Copyright © 2020-2023  润新知