from multiprocessing import Process, Queue,Pool
import time
import os def producer(q):
for i in range(5):
time.sleep(0.6)
print("生产第%s个包子" % (i + 1))
res = i + 1
q.put(res) # 没生产一个,往队列里加一个
time.sleep(1)
q.put(None) def cousumer(q):
while True:
res = q.get()
if res == None:
break
time.sleep(1)
print("消费者吃的第%s个包子" % res) if __name__ == '__main__': '''
进程:
target:表示调用对象,也就是子进程要执行的对象
args:调用对象的位置参数元组
kwargs:调用对象的字典
name:子进程的名字
p.join([timeout]):主线程等待P终止
进程队列:进程彼此隔离,要实现进程之间的通信,可以使用队列和管道
q = Queue([maxsize])
q.put('123') #往队列中加元素
q.get('123') #往队列中读取并删除一个元素
q.full() #判断队列是否已经满了,满了再放进去就会阻塞
q.empty() #判断队列是否已经空了,空了就不能再get '''
q = Queue()
p_lst = []
for i in range(5):
s1 = "子进程" + "producer"
s2 = "子进程" + "cousumer"
p = Process(target=producer, args=(q,), name=s1)
c = Process(target=cousumer, args=(q,), name=s2)
p.start()
c.start()
print(p.pid)
p_lst.append(p)
print(p.is_alive()) # 判断进程P是否存话
# p.terminate() # 终止P进程
print(p.is_alive())
p.join()
'''
需要等待子进程执行完毕后才能继续执行,就需要有一种机制能够让主进程检测子进程是否运行完毕,在子进程执行完毕后才继续执行,否则一直在原地阻塞,这就是join方法的作用
看清楚:join作用是让主进程等待子进程结束,其他子进程并不会停止
'''
time.sleep(1)
print("执行主进程")
print(p_lst)

  

<随便写>进程基本知识的更多相关文章

  1. Jquery 随便写些知识点

    针对jQuery随便写些觉得还挺实用的一些东西,也没系统的去理一番,只是想到哪写到哪,写的不完全也请多见谅. jQuery和其他javascript库产生$符号冲突了?$符号想必用jQuery的人都不 ...

  2. Linux进程管理知识整理

    Linux进程管理知识整理 1.进程有哪些状态?什么是进程的可中断等待状态?进程退出后为什么要等待调度器删除其task_struct结构?进程的退出状态有哪些? TASK_RUNNING(可运行状态) ...

  3. 【Hook技术】实现从"任务管理器"中保护进程不被关闭 + 附带源码 + 进程保护知识扩展

    [Hook技术]实现从"任务管理器"中保护进程不被关闭 + 附带源码 + 进程保护知识扩展 公司有个监控程序涉及到进程的保护问题,需要避免用户通过任务管理器结束掉监控进程,这里使用 ...

  4. 随便写一点最近开发遇到的问题和解决方法 大部分关于laravel和php

    laravel里要想对对象进行自己设计的排序(usort()), 得用匿名方法,  原声php就不用 php里面可以随便写html代码,  比如可以把html直接后缀名改成.php, 然后在任何地方& ...

  5. <随便写>同步,异步进程池,线程

    from multiprocessing import Pool import time import os def work(n): print("%s run" % os.ge ...

  6. {Python之进程} 背景知识 什么是进程 进程调度 并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 multiprocess模块 进程池和mutiprocess.Poll

    Python之进程 进程 本节目录 一 背景知识 二 什么是进程 三 进程调度 四 并发与并行 五 同步\异步\阻塞\非阻塞 六 进程的创建与结束 七 multiprocess模块 八 进程池和mut ...

  7. Python之进程 基础知识 上

    阅读目录 理论知识 操作系统背景知识 什么是进程 进程调度 进程的并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 在python程序中的进程操作 multiprocess模块 进程的创建和mu ...

  8. C#写进程守护程序

    最近写了好多次进程守护程序,今天在这里总结一下. 用到的知识点: 1.在程序中启动进程, 2.写Windows服务, 3.以及在Windows服务中启动带界面的程序 关于第三点的问题,我在我的上一篇博 ...

  9. <随便写> 多线程的例子

    ''' 一个线程在使用这个共享的时候,其他线程必须等待他结束 通过"锁"实现,作用就是防止多个线程使用这片内存空间 进程:程序的一次执行 线程:cpu运算的基本调度单位 多线程:大 ...

随机推荐

  1. C中为什么不能用==比较字符串?

    通常的回答是,==比较的不是字符串的内容,它是在比较指针.或者说,==(或者!=)仅比较两个字符串的首地址,而不会比较字符串每个字符. 那其实接下来应该问的问题是,为什么会只比较首地址呢? 因为早期的 ...

  2. Android Android Studio 如何导出 Jar 给 Unity 使用

    大致步骤如下: 1.创建新的 Android Studio 工程 2.为此 Android Studio 工程创建 Android Library 类库(也就是一个 Module)(后面就是用它生成 ...

  3. VS 解决方案

    //1.如果你的VS用到了环境变量,你在更改了环境变量路径后需要重启VS

  4. Dart编程环境

    本章讨论在Windows平台上为Dart设置执行环境. 使用DartPad在线执行脚本 您可以使用https://dartpad.dartlang.org/上的在线编辑器在线测试您的脚本.Dart编辑 ...

  5. 扫描线+树状数组——cf1191F

    把所有点离散化,虚构一根扫描线从上往下扫,每行的点从左往右算贡献,开一个树状数组维护每个离散化后的x坐标是否已经有点 扫描到一个点时,先把这个点更新到树状数组里,每个点的贡献是它左边的所有点数*到它相 ...

  6. weblogic重置控制台密码

    1.备份文件如下文件 %DOMAIN_HOME%/security/DefaultAuthenticatorInit.ldift 2.进入%DOMAIN_HOME%/security目录,执行下列命令 ...

  7. 码云挂了,无法访问gitee

    解决方式1.修改dns为114.114.114.114 2.hosts文件添加212.64.62.174   gitee.com

  8. D 语言学习感受

    胃抽动!特想吐!不过,还是很佩服写这种语言的人,不是大拿,怎么可能开发一门语言!

  9. struts漏洞处理--老项目struts版本升级遇到的问题

    struts漏洞S2-016被扫描出,要求升级struts版本,查看生产struts版本2.0.12,该漏洞影响版本2.3.15以下,上网搜索,struts2.5以上的要求jdk1.7,由于项目过老, ...

  10. capserjs-prototype(中)

    evaluateOrDie() 具体样式: evaluateOrDie(Function fn[, String message, int status]) Evaluates an expressi ...