当前位置:   article > 正文

4-1 多进程练习题

多进程选择题

四 练习题

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

2、进程之间的内存空间是共享的还是隔离的?下述代码的执行结果是什么?

  1. from multiprocessing import Process
  2. n=100 #在windows系统中应该把全局变量定义在if __name__ == '__main__'之上就可以了
  3. def work():
  4. global n
  5. n=0
  6. print('子进程内: ',n)
  7. if __name__ == '__main__':
  8. p=Process(target=work)
  9. p.start()
  10. print('主进程内: ',n)

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

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

 

三 练习题

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

  1. from multiprocessing import Process
  2. import time
  3. import random
  4. def task(n):
  5. time.sleep(random.randint(1,3))
  6. print('-------->%s' %n)
  7. if __name__ == '__main__':
  8. p1=Process(target=task,args=(1,))
  9. p2=Process(target=task,args=(2,))
  10. p3=Process(target=task,args=(3,))
  11. p1.start()
  12. p2.start()
  13. p3.start()
  14. print('-------->4')

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

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

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

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

效果三:保证按顺序输出

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

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

 

二 练习题

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

  1. from multiprocessing import Process
  2. import time
  3. def foo():
  4. print(123)
  5. time.sleep(1)
  6. print("end123")
  7. def bar():
  8. print(456)
  9. time.sleep(3)
  10. print("end456")
  11. if __name__ == '__main__':
  12. p1=Process(target=foo)
  13. p2=Process(target=bar)
  14. p1.daemon=True
  15. p1.start()
  16. p2.start()
  17. print("main-------")




转载于:https://www.cnblogs.com/venicid/p/8878970.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/462486
推荐阅读
相关标签
  

闽ICP备14008679号