码迷,mamicode.com
首页 > 其他好文 > 详细

006-Process-Pool-Queue

时间:2018-04-27 02:29:21      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:数据   顺序   导致   守护   客户   执行   span   进程id   创建   

    1. 如果程序中使用了多进程,子进程一般都放在主进程前面执行(开启进程守护后,必须放在前面)
    2. 如果要使用进程守护,那么要在启动进程前设置 : sub_process.daemon = True
    3. 个人理解 : 让每个进程/线程中只有一个能产生阻塞的代码(保证可能产生阻塞的代码在不同进程/线程中)
    4. 当创建一个子进程时,实际上是对主进程进行了拷贝(拷贝时主进程有什么,拷贝后子进程就有什么,但是接下来在子进程中的操作,不会影响到主进程中的内容,比如变量,函数的调用等等),所以,进程之间是不会共享数据的
    5. 进程之间不共享数据(不共享全局变量),如果想在进程间通信,要使用 Queue
    6. 进程池 Pool : 开启进程池后,如果不打印进程id,是看不出来有几个进程在执行的,但是进程池会自动根据执行内容来分配到底让几个进程来执行,进程池中的进程数不一定总是满的
    7. Pool 的规定用法 : pool.close() pool.join()
    8. 进程池中,apply() 是同步(每个进程逐个执行)、阻塞的;apply_async() 是异步(进程池中的所有进程同时执行)、非阻塞的
    9. apply_async() 会返回一个结果对象,这个对象的 wait() 方,法可以让主进程等待 apply_async() 执行结束后再向下执行(会变成同步)。线程池内通信 : Manager().Queue()
    10. 同步 : 按照顺序逐个执行,异步 : 一起执行
    11. TCP/UDP 配合进程/线程使用时,做好流量控制(e.g. 从服务器拷贝文件夹到客户端,读取发送太快,导致把所有文件的内容写到一个文件中,解决办法 : 读取/发送后 sleep(0.1))

 

006-Process-Pool-Queue

标签:数据   顺序   导致   守护   客户   执行   span   进程id   创建   

原文地址:https://www.cnblogs.com/hhj-study-10years/p/8955595.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!