我的程序创建了一个线程在后台接收消息,
def threadFunc():
....dosomework
while self._active:
message = yield from wsclient.recv()
...dosomework
.....
我的程序要关闭, 所以想通知这个线程退出, 所以, 我在外面 设置 上面这个 while 的判断标志 self._active 为 False ,希望下个循环就退出线程。
但是问题是, 如果一段时间, recv 没有数据读的时候, wsclient.recv() 这个地方会一直阻塞住了, 不会去调 while 的下一次循环。。。。
有什么方法可以退出呢? 这个能设置一个 timeout 吗? 我尝试在创建得到 wsclient 的时候 wsclient.settimeout(3) 好像这个 recv 还是会阻塞住。
而 Python 又不能像 c++那样,直接粗暴的 terminate thread , 请问, 有什么好的办法吗?
def threadFunc():
....dosomework
while self._active:
message = yield from wsclient.recv()
...dosomework
.....
我的程序要关闭, 所以想通知这个线程退出, 所以, 我在外面 设置 上面这个 while 的判断标志 self._active 为 False ,希望下个循环就退出线程。
但是问题是, 如果一段时间, recv 没有数据读的时候, wsclient.recv() 这个地方会一直阻塞住了, 不会去调 while 的下一次循环。。。。
有什么方法可以退出呢? 这个能设置一个 timeout 吗? 我尝试在创建得到 wsclient 的时候 wsclient.settimeout(3) 好像这个 recv 还是会阻塞住。
而 Python 又不能像 c++那样,直接粗暴的 terminate thread , 请问, 有什么好的办法吗?