摘要:
互斥锁:并发串行,是对代码的局部做串型。是共享数据修改的那块代码变成串型。 join: join也是并发串行的。但是join是全局的串型。 互斥锁:牺牲效率保证数据的安全。 队列:效率+数据安全,详见队列一文 进程之间内存是独立的,但其他资源是共享的,如可以操作同一个文件。 没有互斥锁的情况下,以下 阅读全文
摘要:
子进程设置为守护进程后,在主进程代码执行结束(而非进程退出)后,子进程就终止。 如果子进程没有设置为守护进程,那么主进程会等子进行结束才结束主进程。 1. 守护进程的设置必须在start前设置。 2. 守护进程无法再开启子进程。 验证守护进程无法再开启子进程: 输出结果: 报错: 守护进程练习题: 阅读全文
摘要:
1. 进程之间内存空间是隔离还是共享的? 请看代码的输出结果: from multiprocessing import Process n=100 #在windows系统中应该把全局变量定义在if __name__ == '__main__'之上就可以了 def work(): global n n 阅读全文
摘要:
p.start() # 只是将命令交给操作系统,操作系统什么时候执行,主进程并不关心。主进程执行完p.start()交给操作系统后,就会立马执行下一条语句。 p.join() # 当主进程执行到p.join()时,会就等待p子进程执行完后,再继续下一语句。 不过,注意了,如果有多个子进程,并不是串行 阅读全文
摘要:
僵尸进程:一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。任何一个子进程(init除外)在exit()之后,并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构,等待父进程处理。这是每个 子进程在结束时都要经过的阶段。如果子进程在e 阅读全文
摘要:
获取本进程id: os.getpid() 或: 获取父进程id: os.getppid() 阅读全文
摘要:
当主进程开启子进程后,主进程会与子进程并行执行。当主进程执行后不会立马结束进程,而是会等子进程结束才结束,好去清理僵尸子进程(给子进程收尸)。 进程之间内存是相互隔离的。当创建子进程时,会把父进程的内存空间拷贝一份到子进程,子进程的改变不会影响主进程的内存空间。 但进程之间的IO是共享的,可以同时操 阅读全文