我真蠢,真的,我应该先干最简单的事儿的,MD,今天喝了一堆水,还着急上火,嘴里起了一个泡
4月7号怎么这么搞我心态
回归正题,先放代码:
from multiprocessing import Process
import time
def test():
while True:
print('---test---')
time.sleep(1)
if __name__ == '__main__':
p = Process(target=test)
p.start()
while True:
print('---main---')
time.sleep(4)
print("创建进程是否活着: ", p.is_alive())
# p.terminate()
# break
if p.is_alive(): # 如果活着, 则 kill 掉
p.terminate()
# p.join()
# p.terminate()
print(p.is_alive())
以下这句话,用该构造函数来创建一个进程对象
from multiprocessing import Process
下边的这个 test
函数,让即将创建的进程去做:
def test():
while True:
print('---test---')
time.sleep(1)
创建进程,并启动,后边会说一个关闭的问题,你猜可能是 p.close
但并不是
p = Process(target=test)
p.start()
这句话,用来执行关闭这个进程
p.terminate()
最后再介绍一个函数:
p.is_alive() # 用于检查 XX 进程是否还活着
当然,如果你不幸用了 p.close
方法,会报这个错:
ValueError: Cannot close a process while it is still running.
You should first call join() or terminate().
所以,用 p.terminate()
来结束这个进程
稍微搜了一下,好像意思是,如果你搞了一个进程池,那么可以用 p.close()
来关闭
有参考自这个:
- https://www.liaoxuefeng.com/discuss/969955749132672/1361319557070881
- https://stackoverflow.com/questions/25391025/what-exactly-is-python-multiprocessing-modules-join-method-doing
这里有创建进程池的方法:
https://blog.csdn.net/u012193416/article/details/78396814
有pool.close()
和pool.join()
两个方法的用法
OKKOKOK, 铺垫完了,运行以下代码
---main---
---test---
---test---
---test---
---test---
True # <-------- 这里之前 新创建的进程还活着
---main---
False # <-------- 这里 新创建的进程已经没了,所以之后就没有 ---test--- 了
---main---
False
---main---
False
---main---
False
---main---
False
---main---
False
---main---
.....
以后有空再把Python的进程池用法氵一氵
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)