小编mat*_*mat的帖子

Docopt:重复元素之后的选项作为重复元素进行交织

我在我的简单Python程序中使用docopt:

#!/usr/bin/env python
"""
Farmers market

Usage:
  farmersmarket.py buy -i <item> -q <quantity> [<quantity>] [-p <price>] [-dvh]
  farmersmarket.py -d | --debug
  farmersmarket.py -v | --version
  farmersmarket.py -h | --help

Options:
  -i --item         Item.
  -q --quantity     Quantity.
  -p --price        Price.
  -d --debug        Show debug messages.
  -h --help         Show this screen.
  -v --version      Show version.
"""

from docopt import docopt

print docopt(__doc__)
Run Code Online (Sandbox Code Playgroud)

如果我跑:

farmersmarket.py buy --item eggs --quantity 100 115 --price 0.25
Run Code Online (Sandbox Code Playgroud)

预期的行为是以0.25的价格在价值100和115之间购买随机数量的蛋.至少在解释参数时,这没有问题.换句话说,docopt可以按预期获得所有内容:

{'--debug': False,
 '--help': False,
 '--item': …
Run Code Online (Sandbox Code Playgroud)

python docopt

7
推荐指数
1
解决办法
1070
查看次数

使用Python的asyncio按顺序获取数据

我有一个Python 2.7程序,它从网站提取数据并将结果转储到数据库.它遵循消费者生产者模型,并使用线程模块编写.

只是为了好玩,我想用新的asyncio模块(从3.4)重写这个程序,但我无法弄清楚如何正确地做到这一点.

最关键的要求是程序必须按顺序从同一网站获取数据.例如,对于网址' http://a-restaurant.com ',它应首先获得' http://a-restaurant.com/menu/0 ',然后' http://a-restaurant.com/menu/ 1 ',然后' http://a-restaurant.com/menu/2 ',...如果没有提取它们,网站将完全停止提供页面,你必须从0开始.

然而另一个网站(' http://another-restaurant.com ')的另一个获取可以(并且应该)同时运行(其他网站也有sequantial限制).

线程模块非常适合这种情况,因为我可以为每个网站创建单独的线程,并且在每个线程中它可以等到一个页面完成加载,然后再获取另一个页面.

这是一个来自线程版本(Python 2.7)的极为简化的代码片段:

class FetchThread(threading.Threading)
    def __init__(self, queue, url)
        self.queue = queue
        self.baseurl = url
    ...
    def run(self)
        # Get 10 menu pages in a sequantial order
        for food in range(10):
            url = self.baseurl + '/' + str(food)
            text = urllib2.urlopen(url).read()
            self.queue.put(text)
            ...
def main()
    queue = Queue.Queue()
    urls = ('http://a-restaurant.com/menu', 'http://another-restaurant.com/menu') …
Run Code Online (Sandbox Code Playgroud)

python asynchronous python-asyncio

4
推荐指数
1
解决办法
1990
查看次数

标签 统计

python ×2

asynchronous ×1

docopt ×1

python-asyncio ×1