多线程编程:从单线程到多线程的页面索引器优化
1. 引言
在软件开发中,多线程编程是提高程序性能和响应能力的重要手段。本文将详细介绍如何实现一个页面索引器的二级线程,并探讨如何将其从单线程优化为多线程版本。
2. 二级线程的实现
在页面索引器中,二级线程通过Walker类实现,该类位于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) def __init__(self,