Python多线程编程与PyQt应用实践
1. 实现二级线程
在多线程编程中,二级线程的实现是一个重要的部分。以一个页面索引器(Page Indexer)为例,其二级线程在chap19/walker.py文件中的Walker类里实现。这个类是QThread的子类,它使用QMutex保护对自身私有数据的访问,使用传入的QReadWriteLock保护与主线程共享的数据。
class Walker(QThread): COMMON_WORDS_THRESHOLD = 250 MIN_WORD_LEN = 3 MAX_WORD_LEN = 25 INVALID_FIRST_OR_LAST = frozenset("0123456789_") STRIPHTML_RE = re.compile(r"<[^>]*?>", re.IGNORECASE|re.MULTILINE) ENTITY_RE = re.compile(r"&(\w+?);|&#(\d+?);") SPLIT_RE = re.compile(r"\W+", re.IGNORECASE|re.MULTILINE)这个类开头定义了一些静态变量:
| 变量名 | 作用 |
| ---- | ---- |
|COMMON_WORDS_THRESHO