小编kni*_*ite的帖子

Python 3.5中的协同程序和未来/任务之间的区别?

假设我们有一个虚函数:

async def foo(arg):
    result = await some_remote_call(arg)
    return result.upper()
Run Code Online (Sandbox Code Playgroud)

有什么区别:

coros = []
for i in range(5):
    coros.append(foo(i))

loop = get_event_loop()
loop.run_until_complete(wait(coros))
Run Code Online (Sandbox Code Playgroud)

和:

from asyncio import ensure_future

futures = []
for i in range(5):
    futures.append(ensure_future(foo(i)))

loop = get_event_loop()
loop.run_until_complete(wait(futures))
Run Code Online (Sandbox Code Playgroud)

注意:该示例返回结果,但这不是问题的焦点.当返回值很重要时,请使用gather()而不是wait().

无论回报价值如何,我都在寻求清晰度ensure_future().wait(coros)并且wait(futures)都运行协同程序,所以何时以及为什么要将协程包装进去ensure_future

基本上,使用Python 3.5运行一堆非阻塞操作的正确方法(tm)是async什么?

如果我想批量通话,如果需要额外的积分?例如,我需要调用some_remote_call(...)1000次,但我不想粉碎Web服务器/数据库/等1000个同时连接.这对于线程或进程池是可行的,但有没有办法做到这一点asyncio

python python-asyncio python-3.5

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

如何在Django中使用带有TemplateView的get_context_data

我正在尝试做这样的事情:

class AboutView(TemplateView):
    template_name = 'about.html'

    def get_context_data(self, **kwargs):
        context = super(AboutView, self).get_context_data(**kwargs)
        context['dahl_books'] = Books.objects.filter(author="Dahl')
Run Code Online (Sandbox Code Playgroud)

当我尝试在我的模板中访问dahl_books时,如下所示:

{% for book in dahl_books %}
Run Code Online (Sandbox Code Playgroud)

dahl_books在模板上下文中不可用,即使Books QuerySet返回非零数量的书籍.....我在模板中还是在做错了get_context_data

django django-templates django-views django-class-based-views

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

在响应式布局中设置元素高度?

通常,什么标记和CSS会在响应式设计中创建一个基于百分比的高度的元素?如何使用Twitter Bootstrap构建2列(固定流体)布局?显示如何创建两个100%高度的列,但这会突破高度<100%.

具体来说,我有一个带有项目列表的侧边栏div,可能是短(空)或长(overflow: auto).但是因为没有父元素具有固定的高度,height: 20%;所以不起作用.如何在保持响应式设计的同时为侧边栏提供流畅的高度?

css html5 responsive-design

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

熊猫的日期范围

在与NumPy和dateutil斗争了几天后,我最近发现了令人惊叹的Pandas库.我一直在仔细阅读文档和源代码,但我无法弄清楚如何date_range()在正确的断点处生成索引.

from datetime import date
import pandas as pd

start = date('2012-01-15')
end = date('2012-09-20')
# 'M' is month-end, instead I need same-day-of-month
date_range(start, end, freq='M')
Run Code Online (Sandbox Code Playgroud)

我想要的是:

2012-01-15
2012-02-15
2012-03-15
...
2012-09-15
Run Code Online (Sandbox Code Playgroud)

我得到了什么:

2012-01-31
2012-02-29
2012-03-31
...
2012-08-31
Run Code Online (Sandbox Code Playgroud)

我需要一个月大小的块来计算一个月中可变的天数.这可以使用dateutil.rrule:

rrule(freq=MONTHLY, dtstart=start, bymonthday=(start.day, -1), bysetpos=1)
Run Code Online (Sandbox Code Playgroud)

丑陋和难以辨认,但它的工作原理.我怎么能和熊猫一起做这个?我打得既date_range()period_range(),到目前为止,没有运气.

我的实际目标是使用groupby,crosstab和/或resample计算的基础上,周期内各个条目的总和/单元/等各个周期值.换句话说,我想从以下数据转换数据:

                total
2012-01-10 00:01    50
2012-01-15 01:01    55
2012-03-11 00:01    60
2012-04-28 00:01    80

#Hypothetical usage
dataframe.resample('total', how='sum', freq='M', start='2012-01-09', end='2012-04-15') 
Run Code Online (Sandbox Code Playgroud)

                total …
Run Code Online (Sandbox Code Playgroud)

python datetime time-series pandas

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

使用Django在Heroku上提供根级静态文件?

我需要在Heroku上提供几个根级静态文件(例如domain.com/favicon.ico).这是目前的文件列表:

favicon.ico
crossdomain.xml
sitemap.xml
robots.txt
humans.txt
apple-touch-icon-57x57-precomposed.png
apple-touch-icon-57x57.png
apple-touch-icon-72x72-precomposed.png
apple-touch-icon-72x72.png
apple-touch-icon-114x114-precomposed.png
apple-touch-icon-114x114.png
apple-touch-icon-precomposed.png
apple-touch-icon.png
Run Code Online (Sandbox Code Playgroud)

我搜索了高低,无法找到一个标准的方式来提供大量的静态文件.无论我在哪里托管它们(在带有collectstatic或Amazon S3的Heroku上),在我的urls.py中明确定义和重定向14个文件似乎都是错误的.

django favicon heroku

15
推荐指数
1
解决办法
2215
查看次数

Socket.io,socket.set()和socket属性之间的区别?

Socket.io建议设置每个套接字变量,如下所示:

socket.set('foo', bar, function () {});

也可以在套接字上设置和访问变量:

socket.foo = bar

使用提供的set()函数有什么好处?

javascript node.js socket.io

13
推荐指数
1
解决办法
5519
查看次数

Django favicon.ico正在开发中?

我如何在开发中提供favicon.ico?我可以在我的urlconf中添加一个路由,但我不希望该路由转移到生产环境.有没有办法在local_settings.py中执行此操作?

django favicon

13
推荐指数
3
解决办法
7797
查看次数

何时使用多个事件循环?

我有一个基于Python 3.5+异步框架(apistar,sanic等)构建的Web应用程序.该应用程序进行各种IO调用 - 数据库,Redis等 - 也是异步的.

有些文档建议使用其他事件循环:

import asyncio
import peewee
from peewee_async import Manager, PostgresqlDatabase

loop = asyncio.new_event_loop() # Note: custom loop!
database = PostgresqlDatabase('test')
objects = Manager(database, loop=loop)
Run Code Online (Sandbox Code Playgroud)

我的理解是await语句允许事件循环在上传IO时进行上下文切换,因此额外的事件循环似乎完全没必要.

使用额外的事件循环有什么好处,何时应该使用其他循环?

python event-loop python-3.x async-await python-asyncio

10
推荐指数
2
解决办法
2240
查看次数

使用 Caddy 调试 curl SSL 错误 14094438

凯迪认为一切都很好:

{"level":"info","ts":...,"logger":"tls.issuance.acme.acme_client","msg":"validations succeeded; finalizing order","order":"https://acme-v02.api.letsencrypt.org/acme/order/.../..."}
{"level":"info","ts":...,"logger":"tls.issuance.acme.acme_client","msg":"successfully downloaded available certificate chains","count":2,"first_url":"https://acme-v02.api.letsencrypt.org/acme/cert/..."}
{"level":"info","ts":...,"logger":"tls.obtain","msg":"certificate obtained successfully","identifier":"service.internal.example.com"}
{"level":"info","ts":...,"logger":"tls.obtain","msg":"releasing lock","identifier":"service.internal.example.com"}
Run Code Online (Sandbox Code Playgroud)

Caddy 容器内部:

# curl https://localhost/ -H "Host: service.internal.example.com" -v
*   Trying 127.0.0.1:443...
* Connected to localhost (127.0.0.1) port 443 (#0)
* ALPN: offers h2
* ALPN: offers http/1.1
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS alert, internal error (592):
* error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error
* Closing connection 0
curl: (35) error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert …
Run Code Online (Sandbox Code Playgroud)

ssl curl ssl-certificate caddy

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

大范围连续整数的数据结构?

假设您在内存中有大量连续的整数,每个整数属于一个类别.两个操作必须是O(log n):将范围从一个类别移动到另一个类别,并查找给定范围的类别计数.

我很确定第二次操作是在第一次操作的正确实现的情况下解决的.

每个整数都从一个类别开始,所以我从一组平衡的BST开始.将子树从一个BST移动到另一个BST(例如,将范围移动到另一个类别)具有相当于合并两个BST的运行时间,即O(n1*n2)[ 1 ].

这太慢了(在python中,C不是一个选项),我无法找到一种方法来利用我的数据的固有结构来创建一个有效的BST合并操作.

我现在正在研究AVL,红黑和间隔树,二进制堆和treaps.比较他们的属性是压倒性的.我应该使用哪种结构?

编辑(问题澄清):我对如何存储这些值并创建数据结构很灵活.关于我如何接收来自其他应用程序的输入,我不灵活,如下所示:CATEGORY(cat3, I, J).我当前的解决方案创建了一个树,其中包含该范围中每个整数的节点.这对于我的数据集的大小来说太慢了,所以如果给出更好的方法,我很乐意重新设计.

任何给定的请求都可以将任何可能的整数范围移动到任何类别中.换句话说,范围在CATEGORY(cat1, 1, 10)后面的意义上是重叠的CATEGORY(cat3, 5, 15),但是在任何给定时间每个整数将恰好属于一个类别的意义上是非重叠的.

python algorithm tree computer-science

6
推荐指数
1
解决办法
1538
查看次数