【发布时间】:2021-08-10 20:56:24
【问题描述】:
我想在执行过程中杀死某个进程或所有进程。我的示例代码如下。我怎样才能做到这一点?在这里,我想根据当前时间终止进程。如果时间可以被 2 整除,我想杀死进程,否则不会。
import time
from multiprocessing import Process
def runTests(a, b):
time.sleep(10)
return a + b
def main(kill_processes):
print(kill_processes)
processes = []
for i in range(3):
print(i)
proc = Process(target=runTests, args=(2, 4,))
processes.append(proc)
proc.start()
for proc in processes:
proc.join()
if kill_processes:
print("killing")
proc.terminate()
if __name__ == "__main__":
if round(time.time()) % 2 == 0:
main(True)
else:
main(False)
【问题讨论】:
-
参见multiprocessing in stoppable multithreading — 即使用线程。
-
您可以使用
proc.terminate()杀死一个进程,但我并不完全理解您想要实现的目标。在join()之后进程刚刚结束所以不需要终止它。 -
您终止进程的标准是什么? proc.terminate 和 proc.kill 将完成这项工作。如果目标是在 X 秒后终止,则 proc.join 有一个超时参数。
-
@blazej,我需要在进程结束之前终止。在这个例子中,它们刚刚结束,我需要在它发生之前终止它。我可以稍后提出这个条件
-
@ArunDesiraju - 但这是问题的一部分。有没有其他线程?它可以通过
processes并终止它们。是来自外部的信号吗?
标签: python multiprocessing python-multiprocessing