刚看了一本书,上面写关闭线程的方法就是 设定一个标记,然后根据标记强行停止。我晕,感觉挺奇怪的,反正就是觉得不合理。 请问 python 该怎么关闭线程才合理呢?
1
SeaRecluse 2018-11-28 10:05:32 +08:00 1
其实就是按书上的那样做,python 的线程是伪多线程,实际上并不是并发运行的。我推荐你用 python 的协程去处理事务
|
2
ClutchBear 2018-11-28 10:27:19 +08:00 1
@SeaRecluse #1 但是 python 的协程要每个函数都要用协程的写法才行. 如果改以前的代码好麻烦的.
但就协程而言, go 的协程最方便. |
3
wevsty 2018-11-28 10:48:05 +08:00 1
让线程自己退出是最合理的。
原因是线程如果不是自己退出那么资源释放的问题没办法解决,因为多个线程可能引用了同一个资源,强行终止一个线程如果不释放资源那么就会又内存泄漏一类的毛病,如果强行终止以后强行释放资源那么其他线程又可能运行异常。 OS 层面上考虑 Win 下面 TerminateThread,可以强行终止线程,但是不会帮你做任何释放线程资源的工作。 Linux 的 pthread_cancel,并不是强行终止线程,只是发送退出信号,实际上也还是要线程自己退出的。 从 Python 的层面上考虑 Python 线程这个概念其实还是和 OS 统一的,虽然 GIL 会导致永远只有一个线程在运行,但是还是需要按照多线程的方式来思考问题。 |