我们有一个系统存储(一位数)数百万张图像,大小从8KB到500KB不等,中位数大约为15KB,平均为30KB.总数据集目前约为100GB.我们希望基于图像的散列来访问图像(这可以被改变,但是它需要可以从图像计算以便检查图像是否已经有效地存在于数据存储中 - 处理图像使得两个如果它们是逐字节相同的,则像素是像素对像素相同的.持久性(显然)很重要.
目前我们将它们全部存储为目录中的文件 - 内核缓存目录列表,并根据需要进行实际的文件读取.据我了解,键值存储的主要优点(与使用文件系统为一体)是读取较小的值,因为整个页面可以缓存,而不是只有一个值.所有访问当前来自与数据在同一服务器上的Web服务器(在Intranet上),但我们可能会检查是否存在来自远程计算机的密钥(主要通过10GbE连接).
没有任何特别的理由来改变它,尽管随着系统的其他主要部分的改变,重新考虑当前的方法似乎是值得的.
给定一个工作负载,其读取主要是(单个)读取插入顺序和随机(但很可能重复)访问任意键,除了频繁写入(大小为1:10写入:读取),是否有可能从文件系统转移到键值存储是非常有利的吗?
鉴于以下内容:
from time import sleep
def runTest(a):
sleep(1)
assert a >= 0
def test_all():
for i in range(5):
yield (runTest, i)
Run Code Online (Sandbox Code Playgroud)
我希望这五个测试能够并行运行nosetests --processes=8并因此在大约一秒钟内运行 - 然而,运行只需要超过五秒钟:它们似乎是按顺序运行而不是同时运行.
根据鼻子文档,多进程插件支持测试生成器(因为鼻子文档调用它们)自1.1:我使用鼻子1.3.0所以应该支持它._multiprocess_can_split_ = True正如人们所预料的那样,添加确实会有所不同,因为没有使用灯具.
如何让这五个测试同时运行?