【发布时间】:2016-02-03 05:37:54
【问题描述】:
我正在尝试编写一个 Python 多线程脚本,它在不同的线程中执行以下两件事:
- 父级:启动子线程,做一些简单的任务,停止子线程
- 孩子:做一些长时间运行的任务。
下面是一个简单的方法。它对我有用:
from multiprocessing import Process
import time
def child_func():
while not stop_thread:
time.sleep(1)
if __name__ == '__main__':
child_thread = Process(target=child_func)
stop_thread = False
child_thread.start()
time.sleep(3)
stop_thread = True
child_thread.join()
但是出现了一个复杂情况,因为实际上,我需要运行一个长时间运行的进程,而不是 child_func() 中的 while 循环,除非它被 Ctrl-C 杀死,否则它不会停止。所以我不能定期检查那里的stop_thread 的值。那么我怎样才能告诉我的子进程在我想要的时候结束呢?
我相信答案与使用信号有关。但是我还没有看到一个很好的例子来说明如何在这种确切的情况下使用它们。有人可以通过修改我上面的代码来帮助使用信号在子线程和父线程之间进行通信。如果用户按下 Ctrl-C,则使子线程终止。
【问题讨论】:
标签: python multithreading