【发布时间】:2021-05-19 22:02:10
【问题描述】:
我正在(自制)基于 C 的 python 扩展中运行一些计算量很大的模拟。有时我会出错并想终止模拟。但是,Ctrl-C 似乎没有任何效果(除了将^C 打印到屏幕上),所以我必须使用kill 或系统监视器来终止进程。
据我所知,python 只是等待 C 扩展完成,在此期间并没有真正与它通信。
有没有办法让它工作?
更新:主要答案(针对我的具体问题)结果是:
1. 重写代码以定期将控制权交还给调用者(在下面回答Allowing Ctrl-C to interrupt a python C-extension),或者
2.使用PyErr_CheckSignals()(下面回答https://stackoverflow.com/a/33652496/423420)
【问题讨论】:
-
阅读signal-safety(7) 非常相关
标签: python linux python-c-api