我想在 python 3.7 中使用 trie 搜索,以便将字符串与某些给定的单词匹配。trie 搜索算法实际上非常快,但是我也想使用我的 CPU 的所有内核。假设我的电脑有 8 个内核,我想使用其中的 7 个。因此,我将我的单词数据库拆分为 7 个同样大的列表,并创建了每个列表。(这是并行化代码的基本思想)
但是,当我从多处理模块调用 Process() 时,Process().start() 方法可能会在真实数据库上占用几秒钟的时间。(搜索本身大约需要一微秒)。
老实说,我还不是一个专业的程序员,这意味着我可能在代码中犯了一些重大错误。有人看到这个过程的开始如此缓慢的原因吗?
请考虑到我使用比下面的 trie 更大的数据库测试了脚本。我还测试了每次只调用 1 个进程的脚本,这也明显变慢了。我想提供更少的代码,但是我认为很高兴看到运行问题。如果需要,我还可以提供其他信息。
import string
import sys
import time
from multiprocessing import Process, Manager
from itertools import combinations_with_replacement
class TrieNode:
def __init__(self):
self.isString = False
self.children = {}
def insertString(self, word, root):
currentNode = root
for char in word:
if char not in currentNode.children:
currentNode.children[char] = TrieNode()
currentNode = currentNode.children[char]
currentNode.isString = True
def findStrings(self, prefix, node, results): …Run Code Online (Sandbox Code Playgroud)