标签: generator

如何使用Python C API创建生成器/迭代器?

如何使用Python C API复制以下Python代码?

class Sequence():
    def __init__(self, max):
        self.max = max
    def data(self):
        i = 0
        while i < self.max:
            yield i
            i += 1
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有这个:

#include <Python/Python.h>
#include <Python/structmember.h>

/* Define a new object class, Sequence. */
typedef struct {
    PyObject_HEAD
    size_t max;
} SequenceObject;

/* Instance variables */
static PyMemberDef Sequence_members[] = {
    {"max", T_UINT, offsetof(SequenceObject, max), 0, NULL},
    {NULL} /* Sentinel */
};

static int Sequence_Init(SequenceObject *self, PyObject *args, PyObject *kwds)
{
    if (!PyArg_ParseTuple(args, "k", &(self->max))) { …
Run Code Online (Sandbox Code Playgroud)

c python iterator generator python-c-api

43
推荐指数
2
解决办法
8375
查看次数

出于好奇:如何生成序列号?提示,算法?

我想知道序列号生成器和验证器如何工作.我的目标是生成一个序列号,其中包含五个部分,仅包括数字和字母.

我喜欢编码作为一种爱好,不会称自己为专业程序员.但是,我对这些有趣的功能如何在技术上工作以扩展我的想法非常感兴趣.

任何提示,经验或书面算法都表示赞赏.

algorithm validation generator serial-number

42
推荐指数
4
解决办法
3万
查看次数

发电机是否有线程?

我有一个多线程程序,我创建一个生成器函数,然后将其传递给新线程.我希望它在本质上是共享/全局的,因此每个线程都可以从生成器获取下一个值.

使用这样的生成器是安全的,还是会遇到从多个线程访问共享生成器的问题/条件?

如果没有,是否有更好的方法来解决问题?我需要一些循环遍历列表的东西,并为任何线程调用它生成下一个值.

python multithreading generator thread-safety

42
推荐指数
3
解决办法
1万
查看次数

如何从嵌套的Python生成器函数中产生结果?

我有一个功能,可以在下载时产生结果.出于这个问题的目的,让我说我每秒产生一次刺痛,但我想要一个方便函数来包装我的生成器:

import time

def GeneratorFunction(max_val):
    for i in range(0,5):
        time.sleep(1)
        yield "String %d"%i

def SmallGenerator():
    yield GeneratorFunction(3)

for s in SmallGenerator():
    print s
Run Code Online (Sandbox Code Playgroud)

...为什么不打印出我期待的5根弦?相反,它似乎返回生成器函数:

<generator object GeneratorFunction at 0x020649B8>
Run Code Online (Sandbox Code Playgroud)

如何让这个产生字符串作为普通的生成器函数?

python yield nested function generator

42
推荐指数
2
解决办法
2万
查看次数

SQL服务器的数据生成器?

我想收到有关SQL服务器可用的数据生成器的建议.如果发布回复,请提供您认为重要的任何功能.

我从未使用过这样的应用程序,所以我希望接受有关该主题的教育.谢谢.

(我的目标是在每个表中填充10,000多条记录的数据库,以测试应用程序.)

sql-server generator data-generation

41
推荐指数
4
解决办法
5万
查看次数

如何在列表中获取生成器的n个下一个值(python)

我已经制作了一个生成器来逐字读取文件,它运行良好.

def word_reader(file):
    for line in open(file):
        for p in line.split():
            yield p

reader = word_reader('txtfile')
next(reader)
Run Code Online (Sandbox Code Playgroud)

在列表中获取n个下一个值的最简单方法是什么?

python list generator

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

渐变文字颜色

是否有一个发电机,或者一个简单的方法来生成诸如文本这样,但不必定义一封信

所以像这样:

.rainbow {
  background-image: -webkit-gradient( linear, left top, right top, color-stop(0, #f22), color-stop(0.15, #f2f), color-stop(0.3, #22f), color-stop(0.45, #2ff), color-stop(0.6, #2f2),color-stop(0.75, #2f2), color-stop(0.9, #ff2), color-stop(1, #f22) );
  background-image: gradient( linear, left top, right top, color-stop(0, #f22), color-stop(0.15, #f2f), color-stop(0.3, #22f), color-stop(0.45, #2ff), color-stop(0.6, #2f2),color-stop(0.75, #2f2), color-stop(0.9, #ff2), color-stop(1, #f22) );
  color:transparent;
  -webkit-background-clip: text;
  background-clip: text;
}
Run Code Online (Sandbox Code Playgroud)
<span class="rainbow">Rainbow text</span>
Run Code Online (Sandbox Code Playgroud)

但不是彩虹色而是用其他颜色生成(例如白色到灰色/浅蓝色渐变等)我找不到一个简单的解决方案.有解决方案吗

css gradient generator linear-gradients css3

40
推荐指数
3
解决办法
11万
查看次数

接受Markdown文档的静态站点生成器的建议?

我正在寻找静态站点生成器,它接受Markdown文档作为输入源代码.我用过Markdoc,但它看起来已经废弃了.并且它不会复制源文档文件夹中的静态文件.所以我现在正在安装docpad.无论如何,我想尝试其他实现.你能推荐一些像网站生成器这样的好实现吗?

markdown generator static-site

38
推荐指数
4
解决办法
2万
查看次数

生成器函数在Java中等效

我想Iterator在Java中实现一个与Python中的以下生成器函数类似的行为:

def iterator(array):
   for x in array:
      if x!= None:
        for y in x:
          if y!= None:
            for z in y:
              if z!= None:
                yield z
Run Code Online (Sandbox Code Playgroud)

java端的x可以是多维数组或某种形式的嵌套集合.我不确定这是如何工作的.想法?

python java iterator generator

38
推荐指数
4
解决办法
4万
查看次数

带有generator/iterable/iterator的Python随机样本

你知道是否有办法让python random.sample与生成器对象一起工作.我试图从一个非常大的文本语料库中获取随机样本.问题是random.sample()引发以下错误.

TypeError: object of type 'generator' has no len()
Run Code Online (Sandbox Code Playgroud)

我在想,也许有一些方法itertools可以用来自某些东西来做这件事但却找不到任何有点搜索的东西.

一个有点组成的例子:

import random
def list_item(ls):
    for item in ls:
        yield item

random.sample( list_item(range(100)), 20 )
Run Code Online (Sandbox Code Playgroud)

UPDATE


按照MartinPieters的要求,我做了目前提出了三种方法的一些具体时机.结果如下.

Sampling 1000 from 10000
Using iterSample 0.0163 s
Using sample_from_iterable 0.0098 s
Using iter_sample_fast 0.0148 s

Sampling 10000 from 100000
Using iterSample 0.1786 s
Using sample_from_iterable 0.1320 s
Using iter_sample_fast 0.1576 s

Sampling 100000 from 1000000
Using iterSample 3.2740 s
Using sample_from_iterable 1.9860 s
Using …
Run Code Online (Sandbox Code Playgroud)

python random generator

38
推荐指数
3
解决办法
2万
查看次数