小编Den*_*nis的帖子

python多处理初始化的开销比好处更糟糕

我想在 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)

python multiprocessing

5
推荐指数
2
解决办法
1855
查看次数

标签 统计

multiprocessing ×1

python ×1