小编Tho*_*mas的帖子

Python的map_async如何保持结果顺序?

我正在尝试为py3.3探索Python的多处理库,我注意到map_async函数中有一个奇怪的结果,我一直无法解释.我一直期待从回调中存储的结果"乱序".也就是说,如果我将多个任务提供给工作进程,则有些任务应该先于其他任务完成,而不一定按照它们被输入或存在于输入列表中的相同顺序.但是,我得到了一组有序的结果,与输入的任务完全一致.即使在故意试图通过减慢某些过程来"破坏"某些过程(这可能会让其他人在它之前完成)之后就是这种情况.

我在calculate函数中有一个print语句,显示它们是按顺序计算的,但结果仍然是有序的.虽然我不确定我是否可以相信印刷声明是一个很好的指标,事实上实际上是在计算乱序.

测试过程(一般示例):构建一个对象列表,每个对象都包含一个整数.将该对象列表作为参数提交给map_async,以及更新对象的numValue属性的函数"calculate",其值为平方值.然后"calculate"函数返回具有更新值的对象.

一些代码:

import time
import multiprocessing
import random

class NumberHolder():
    def __init__(self,numValue):
        self.numValue = numValue    #Only one attribute

def calculate(obj):
    if random.random() >= 0.5:
        startTime = time.time()
        timeWaster = [random.random() for x in range(5000000)] #Waste time.
        endTime = time.time()           #Establish end time
        print("%d object got stuck in here for %f seconds"%(obj.numValue,endTime-startTime))

#Main Process
if __name__ == '__main__':
    numbersToSquare = [x for x in range(0,100)]     #I'm 
    taskList = []

    for eachNumber …
Run Code Online (Sandbox Code Playgroud)

multiprocessing python-3.x

10
推荐指数
1
解决办法
9263
查看次数

为什么 python 字典中的字符串键的写入/读取速度比元组慢?

在尝试优化模仿树结构的程序的速度时(“树”存储在以笛卡尔坐标 x,y 坐标对作为键的 DICT 中),我发现将它们的唯一地址作为元组存储在字典中,而不是与字符串相比,运行时间要快得多。

我的问题是,如果 Python 针对字典和哈希中的字符串键进行了优化,为什么在这个示例中使用元组会快得多?在执行完全相同的任务时,字符串键似乎要花费 60% 的时间。我在我的例子中忽略了一些简单的事情吗?

我引用这个线程作为我的问题的基础(以及其他同样断言字符串更快的线程):使用字符串作为字典中的键总是更快吗?

下面是我用来测试这些方法并计时的代码:

import time

def writeTuples():
    k = {}
    for x in range(0,500):
        for y in range(0,x):
            k[(x,y)] = "%s,%s"%(x,y)
    return k

def readTuples(k):
    failures = 0
    for x in range(0,500):
        for y in range(0,x):
            if k.get((x,y)) is not None: pass
            else: failures += 1
    return failures

def writeStrings():
    k = {}
    for x in range(0,500):
        for y in range(0,x):
            k["%s,%s"%(x,y)] = "%s,%s"%(x,y)
    return k

def readStrings(k):
    failures = …
Run Code Online (Sandbox Code Playgroud)

python dictionary key

2
推荐指数
1
解决办法
1771
查看次数

标签 统计

dictionary ×1

key ×1

multiprocessing ×1

python ×1

python-3.x ×1