我使用的模块通过ctypes.LoadLibrary在__init__中加载C库,并调用一个函数,该函数使用pthread_create calls创建两个进程。线程ID不在任何地方存储。这些进程包含读写串口的while(1)循环。我希望能够杀死库线程,将上述串口用于其他目的,然后用importlib.reload恢复模块功能。现在,在我用ctrl+c杀死python脚本之前,串口仍然是不可访问的。
发布于 2021-08-17 18:27:38
没有它的合作,你就不能扼杀一条线。这绝对行不通。你有两个选择:
while(1)循环,以便它们有某种方式退出.修复不支持干净关机的代码,以便它确实支持干净关机是更好的选择,如果它是实际的。但是有时很难在没有干净关机的复杂代码中添加对干净关机的支持。在一个理想的世界里,每个程序员都会为每个库或模块的干净关机设计支持。
发布于 2021-08-17 17:00:53
因为您没有保存对线程的引用。你不能专门杀了它。最简单和最可靠的方法是将线程ID保存在某个地方。
一些评论谈到列出线程来杀死它们。别干那事!你看不出哪条线是你自己的,杀了别人也不好。只要保存ID,它就简单而健壮了。
https://stackoverflow.com/questions/68821092
复制相似问题