小编bra*_*eye的帖子

为什么PyQt在没有信息的情况下崩溃?(退出代码0xC0000409)

我正在尝试使用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)

当我serialEnabledrun()或中进行读/写操作时发生崩溃ConnDisconn()。我知道PyQt不是线程安全的,变量的错误处理会导致我的类型崩溃,但是我无法理解我的代码出了什么问题。我的想法(可能是错误的)是所有serialThread方法都在同一线程上执行,即使它们连接到gui(主线程)也是如此。错了吗 …

python multithreading pyqt thread-safety pycharm

4
推荐指数
1
解决办法
7451
查看次数

CacheService.putAll 忽略超过某个值的键

我对谷歌缓存脚本的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)

和过去一样,缓存服务似乎是不可预测的,并且在处理过程中不处理错误。多次调用放置缓存较慢,并且不能确保限制将来不会改变,因为它甚至没有在文档中提到......

谢谢

javascript google-sheets google-apps-script

2
推荐指数
1
解决办法
348
查看次数