以一种最有效的方式强制使用Python

2024-10-01 19:32:28 发布

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

我正在尝试开发一种方法来处理大型并行任务,以便对键空间进行野蛮操作。我希望能够想出一种方法来传递给工人一个值,在给定块大小的情况下,该值将告诉工作输出什么。在

简单地说:

给定一个字符集(a-z),最大长度为1(基本上是a-z),块大小为5

如果我给worker 1发送数字0,那么它将使用迭代器的0-4,a,b,d,e,f)如果我发送worker 2数字1,它将需要5-9等。我的代码基本上可以工作:

#!/usr/bin/python

import itertools
maxlen = 5
charset = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

chunksize = 1000
chunkpart = 5


for s in  itertools.islice(itertools.chain.from_iterable((''.join(l) for l in itertools.product(charset, repeat=i))  for i in range(1, maxlen + 1)), chunksize*chunkpart, chunksize*(chunkpart + 1)):
    print s

好的,这很好,如果我把chunkpart 5发送给worker 1,它会在chunkpart上做它需要做的事情。在

当我需要获取一小部分(1000个记录)但又远远超出了一个大的数据集时,这个问题就产生了。假设maxlen是10,chunkpart是50000000。Python需要很长时间才能达到这一点。在

所以,我想我知道为什么会发生这种情况,它需要做大量的数学运算来找出迭代器的位置;我想知道的是,有没有一种更好的方法可以让我在迭代器中走捷径?我的直觉告诉我itertools有答案,我的大脑说你需要更好地理解itertools。在


Tags: 方法infor空间情况数字worker工人

热门问题