1.84K 浏览
0

比如在多线程环境, 当主线程main_api.wait_update时,若存在多个子线程在启动,而这些子线程工作在密集计算代码,则主线程得不到运行,导致main_api.wait_update响应超时,这种情况根据我的测试,若你是在等待k线更新,基本上程序就over了,因为k线已经不再更新了

因此对计算密集型代码需人工设置短时阻塞,以使其他线程获得切换机会. 但是这样做依然是很不理想的,当子线程数量继续增加时,主线程依然可能因超时而停摆.同时人为设置阻塞以让主线程获得切换机会的方式实在太丑陋了

建议能在wait_update时导致某个数据面超时后,确保后面可以跟得上,而不是直接中断其更新.

目前我的做法是跟踪某个数据的更新,一旦停止,重新get,但为什么不能在wait_update中实现呢,而让用户去实现?

李思恒 已回答的问题 2021年10月18日

另,网络问题也可能导致超时, 所以我的程序在下雨天表现更为糟糕,因为我用得是手机热点,o(* ̄︶ ̄*)o

另,由于python线程无法设置线程优先级(由于GIL机制),目前也没有其他好方法. 不知道有没有其他方法可以使用

0

第一我们不建议用热点这种方式上网,网络状况很关键,第二如果延迟的话,我们会直接传输最新的数据,中间网络断掉的痐推算,第三多线程这种用法有些超出我们的支持范围哈,情况更加复杂

李思恒 已回答的问题 2021年10月18日