标签: generator

代码图像生成器

几个星期前,我看到一个带有强大生成器的网站,可以创建自己的源代码文件的精美图片.生成器创建的图像具有可变效果,如透视变换和景深等.

通常情况下我不会在这里问这样的问题,但我用Google搜索超过2小时,我再也找不到这个发电机了.我真的很疯狂 - 我知道这个网站存在...

这是使用此生成器生成的代码示例图:

令人敬畏的图片可能是用我正在搜索的那台发生器制作的

非常感谢你!Waescher

image generator

26
推荐指数
0
解决办法
1万
查看次数

Python中是否有库函数将生成器函数转换为返回列表的函数?

有很多次我认为生成器样式可以更直接地返回列表,例如,

def foo(input_array):
    for x in input_array:
        yield processed(x)
Run Code Online (Sandbox Code Playgroud)

def bar(input_array):
    accumulator = []
    for x in input_array:
        accumulator.append(processed(x))
    return accumulator
Run Code Online (Sandbox Code Playgroud)

(好吧,如果它真的那么简单,我会写map,但你明白了:生成器版本更清晰).但是,并不总是需要返回类型的发电机.是否有一个内置的装饰器,我可以用它来改变foo一个返回列表或元组的函数?我自己写的方式是,

import functools

def transform_return_value(transformer):
    def inner(f):
        @functools.wraps(f)
        def new_f(*argv, **kwargs):
            return transformer(f(*argv, **kwargs))
        return new_f
    return inner

@transform_return_value(list)
def foo(input_array):
    for x in input_array:
        yield processed(x)
Run Code Online (Sandbox Code Playgroud)

python generator

25
推荐指数
2
解决办法
9208
查看次数

Python SyntaxError :("'return'with argument in generator",)

我的Python程序中有这个函数:

@tornado.gen.engine
def check_status_changes(netid, sensid):        
    como_url = "".join(['http://131.114.52:44444/ztc?netid=', str(netid), '&sensid=', str(sensid), '&start=-5s&end=-1s'])

    http_client = AsyncHTTPClient()
    response = yield tornado.gen.Task(http_client.fetch, como_url)

    if response.error:
            self.error("Error while retrieving the status")
            self.finish()
            return error

    for line in response.body.split("\n"):
                if line != "": 
                    #net = int(line.split(" ")[1])
                    #sens = int(line.split(" ")[2])
                    #stype = int(line.split(" ")[3])
                    value = int(line.split(" ")[4])
                    print value
                    return value
Run Code Online (Sandbox Code Playgroud)

我知道

for line in response.body.split
Run Code Online (Sandbox Code Playgroud)

是一个发电机.但我会将值变量返回给调用该函数的处理程序.这可能吗?我能怎么做?

python return generator tornado

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

如何使用生成器遍历文件系统?

我正在尝试创建一个实用程序类来遍历目录中的所有文件,包括子目录和子子目录中的文件.我试图使用发电机,因为发电机很酷; 但是,我遇到了麻烦.


def grab_files(directory):
    for name in os.listdir(directory):
        full_path = os.path.join(directory, name)
        if os.path.isdir(full_path):
            yield grab_files(full_path)
        elif os.path.isfile(full_path):
            yield full_path
        else:
            print('Unidentified name %s. It could be a symbolic link' % full_path)
Run Code Online (Sandbox Code Playgroud)

当生成器到达目录时,它只是产生新生成器的内存位置; 它没有给我目录的内容.

如何让生成器生成目录的内容而不是新的生成器?

如果已经有一个简单的库函数来递归列出目录结构中的所有文件,请告诉我它.我不打算复制库函数.

python recursion iterator yield generator

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

使用大数据进行多处理

multiprocessing.Pool()用来并行化一些繁重的计算.

目标函数返回大量数据(一个巨大的列表).我的RAM用完了.

如果没有multiprocessing,我只需将目标函数更改为生成器,通过逐个yield计算结果元素.

我理解多处理不支持生成器 - 它等待整个输出并立即返回它,对吧?没有屈服.有没有办法让Pool工作人员在数据可用时立即生成数据,而无需在RAM中构建整个结果数组?

简单的例子:

def target_fnc(arg):
   result = []
   for i in xrange(1000000):
       result.append('dvsdbdfbngd') # <== would like to just use yield!
   return result

def process_args(some_args):
    pool = Pool(16)
    for result in pool.imap_unordered(target_fnc, some_args):
        for element in result:
            yield element
Run Code Online (Sandbox Code Playgroud)

这是Python 2.7.

python generator multiprocessing

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

Observables(Rx.js)与ES2015发生器相比如何?

据我了解,以下是解决异步编程工作流的技术:

  1. 回调(CSP)
  2. 承诺

较新的方法:

  1. Rx.js Observables(或大多数,bacon.js,xstream等)
  2. ES6发电机
  3. 异步/等待

我们现在正在回避这些新方法的回调和承诺.我目前理解的是 - 在ES2015生成器之上,Async/Await更像是一个更清晰的抽象.

我无法理解的是Observables和Generators之间的概念差异.我已广泛使用它们并且使用它们没有任何问题.

令我困惑的是Observables和Generators的用例.我得出的结论是,他们最终解决了同样的问题 - 异步性.我看到的只有潜在的差异是生成器固有地为代码提供命令式语义,而使用Rxjs的Observable似乎提供了反应范式.但是这样吗?

这应该是Observable和Generator之间选择的标准吗?优缺点都有什么.

我错过了大局吗?

随着Observable最终制作成未来的Ecmascript,Promises(带有可取消令牌)/ Observable/Generators会相互竞争吗?

javascript generator reactive-programming ecmascript-6 rxjs5

24
推荐指数
2
解决办法
3018
查看次数

获取生成器的子集

我有一个发电机功能,想从中得到前10个项目; 我的第一次尝试是:

my_generator()[:10]
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为生成器不是可订阅的,因为错误告诉我.现在我已经解决了这个问题:

list(my_generator())[:10]
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为它将生成器转换为列表; 然而,这是低效的,并且失去了拥有发电机的重点.是否有一些内置的,Pythonic相当于[:10]发电机?

python generator

23
推荐指数
2
解决办法
3024
查看次数

JavaScript唯一浏览器ID

反正在javascript中为浏览器创建一个唯一的ID?

我不是在谈论每次生成它时随机的ID,而是一个生成的浏览器所特有的ID,但也考虑了它运行的计算机.

例:

Windows 7 Chrome可能会生成:asdh128hakj4gh

Windows 7 Opera可能会生成:23hjad823hjakk

Windows 7 Chrome,差异硬件,可能会生成:asd238881jaal

等等...

反正有没有这样做?

javascript unique generator uniqueidentifier

23
推荐指数
3
解决办法
5万
查看次数

龙卷风的"产量"和机制中的asyncio的"产量"之间的差异?

在Tornado中,我们通常编写以下代码来异步调用函数:

class MainHandler(tornado.web.RequestHandler):

    @tornado.gen.coroutine
    def post(self):
        ...
        yield self.handleRequest(foo)
        ...

    @tornado.gen.coroutine
    def handleRequest(self, foo):
        ...
Run Code Online (Sandbox Code Playgroud)

但是在asyncio中(将随Python 3.4一起提供,可以从pip for Python 3.3安装),我们yield from用来实现同样的目的:

@asyncio.coroutine
def myPostHandler():
    ...
    yield from handleRequest(foo)
    ...


@asyncio.coroutine
def handleRequest(foo)
    ...
Run Code Online (Sandbox Code Playgroud)

从代码看,差异是yieldyield from.然而,前者handleRequest(foo)返回一个tornado.concurrent.Future对象,后者返回一个generator对象.

我的问题是,机制中两件事之间有什么区别?控制流程如何?谁调用实际handleRequest并检索其返回值?

附加:我具有Python生成器和迭代器的基本知识.我想通过使用这些来了解Tornado和asyncio的成就,以及这两种机制之间的区别.

python yield generator tornado

23
推荐指数
1
解决办法
4014
查看次数

"model.fit_generator"中使用的参数"max_q_size"是什么?

我构建了一个简单的生成器,tuple(inputs, targets)inputstargets列表中只生成一个单项.基本上,它一次抓取数据集,一个样本项.

我把这个发生器传递给:

  model.fit_generator(my_generator(),
                      nb_epoch=10,
                      samples_per_epoch=1,
                      max_q_size=1  # defaults to 10
                      )
Run Code Online (Sandbox Code Playgroud)

我明白了:

  • nb_epoch 是训练批次的运行次数
  • samples_per_epoch 是每个时期训练的样本数量

但它是什么max_q_size,为什么它会默认为10?我认为使用生成器的目的是将数据集批量化为合理的块,那么为什么要添加额外的队列呢?

python machine-learning generator keras

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