我正在尝试使用PyQt开发软件,但是我经常陷入没有调试信息(仅退出代码0xC0000409)的软件崩溃的情况。我正在使用QThread,我写了一个像这样的系统:
class serialThreadC(QThread):
updateOutBox = QtCore.pyqtSignal(str)
updateStatus = QtCore.pyqtSignal(int)
def __init__(self):
super(serialThreadC, self).__init__()
self.ser = False
self.state = 0
self.serialEnabled = False
def run(self):
while True:
if self.state == -3 or self.state == -2:
if self.SerialEnabled:
self.updatePB(20)
elif self.state == 0:
if self.serialEnabled:
self.updatePB(20)
def ConnDisconn(self):
self.serialEnabled = not self.serialEnabled
def updatePB(self, stat):
self.state = stat
self.updateStatus.emit(self.state)
serialThread = serialThreadC()
serialThread.start()
## sw is a QDialog already loaded
serialThread.updateOutBox.connect(sw.updateOutBox)
serialThread.updateStatus.connect(sw.updateStatus)
sw.PB_ConnDisconn.clicked.connect(serialThread.ConnDisconn)
Run Code Online (Sandbox Code Playgroud)
当我serialEnabled在run()或中进行读/写操作时发生崩溃ConnDisconn()。我知道PyQt不是线程安全的,变量的错误处理会导致我的类型崩溃,但是我无法理解我的代码出了什么问题。我的想法(可能是错误的)是所有serialThread方法都在同一线程上执行,即使它们连接到gui(主线程)也是如此。错了吗 …
我对谷歌缓存脚本的putAll() 方法有问题。该方法似乎有效,但仅适用于前 (~100) 对
在我的脚本中,我必须缓存大量行(~2500 * 3),每一行都在不同的键中,我发现缓存服务出现故障。为了找出问题,我写了一个简单的代码
function myFunction() {
var cache = CacheService.getScriptCache();
var toCache = {};
for (var i = 0; i < 2000; i++){
toCache["key"+i] = "value"+i;
}
cache.putAll(toCache);
var tmp;
for (var i = 0; i < 2000; i+=10){
var a = cache.get("key"+i);
if (a == null) { tmp = "key"+i; break; }
}
tmp = tmp;
}
Run Code Online (Sandbox Code Playgroud)
和过去一样,缓存服务似乎是不可预测的,并且在处理过程中不处理错误。多次调用放置缓存较慢,并且不能确保限制将来不会改变,因为它甚至没有在文档中提到......
谢谢