擅长:python、mysql、java
<p>像这样的事情也许会奏效</p>
<pre><code>class PickleDumpingThread(QThread):
def __init__(self, data):
super().__init__()
self.data = data
def run(self):
pickle.dump(self.data["deque"], open(file, 'wb'))
self.emit(QtCore.SIGNAL('threadFinished(int)'), self.currentThreadId())
class Analyzer():
def __init__(self):
self.cnt = 0
self.dataDeque = deque(MAXLENGTH=10000)
self.threadHandler = {}
def onData(self, data):
self.dataDeque.append({ "data": data, "createdTime": time.time() })
self.cnt += 1
if self.cnt % 10000 == 0:
thread = PickleDumpingThread(self.dataDeque)
self.connect(thread, QtCore.SIGNAL("threadFinished(int)"), self.threadFinished)
thread.start()
self.threadHandler[thread.currentThreadId()] = thread
@QtCore.pyqtSlot(int)
def threadFinished(id):
del self.threadHandler[id]
</code></pre>
<p><code>self.threadHandler</code>只是想知道有多少线程仍在运行,可以去掉它和<code>threadFinished</code>方法</p>