python是否自己并行执行列表上的任务?

2024-10-06 10:35:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我偶然发现了这件作品:

def getChild(self, childName):
    for child in self.children :
        if(childName == child.data['name']):
            return child
    return None

就ranting而言,这段代码意味着关于这个库的所有内容。你知道吗

我对python不是很了解,但我认为执行此任务的规范python方法是

def getChild(self, childName):
    return (
        [ child for child in self.children
            if child.data['name'] == childName
        ] + [ None ]
        )[0]

或者,为了更好的可读性

def getChild(self, childName):
    myChildren = dict([
         (child.data['name'],child)
             for child in self.children
    ])
    try:
        return myChildren[childName]
    except:
        return None

除了我仍然不知道如何以及何时缩进以及在哪里放置{[()]}之外,我的替代方法总是对self.children的所有元素都起作用。你知道吗

python认识到这一点并并行地处理数据集,还是仍然按顺序处理数组?(因此总比我在图书馆里找到的简单搜索要花更长的时间)

由于执行了大量的查找,当然最好将库更改为始终维护一个儿童词典,而不是一个列表,但这不是重点。我想知道python如何解释和处理这些代码。你知道吗


Tags: 方法代码nameinselfnonechildfor
1条回答
网友
1楼 · 发布于 2024-10-06 10:35:03

不,没有自动并行化。Python的目的是高效地编写代码,而不是提高计算效率。还有一个更大的问题:GIL-Global解释器锁。这意味着一次只执行一个线程。因此,在python中并行化CPU密集型任务没有什么意义。有些口译员没有GIL,但一般的经验法则是:如果你不知道GIL,那么你就有了它。你知道吗

关于您发布的代码:python允许您以最常见的过程风格或函数式风格进行编写,这在大学里很受欢迎。你可以任意选择。你知道吗

相关问题 更多 >