我的目标是在Flask应用程序启动后运行任意代码.这是我得到的:
def run():
from webapp import app
app.run(debug=True, use_reloader=False)
Run Code Online (Sandbox Code Playgroud)
理想情况下,我可以这样做:
def run():
from webapp import app
app.run(debug=True, use_reloader=False)
some_code()
Run Code Online (Sandbox Code Playgroud)
但代码不会继续app.run()
,所以some_code()永远不会运行.
我目前正在处理的解决方案是在app.run()的一个单独的线程中运行some_code(),创建一个先设置它的第一个请求函数:
app.is_running = True
Run Code Online (Sandbox Code Playgroud)
然后获取some_code()以向app发送基本请求,以便"在第一次请求之前"代码运行.这相当复杂,难以记录.我宁愿使用已经在Flask中提供的app.is_running参数,或者使用@app.after_server_start
装饰器,但据我所知,这些都不存在.
帮我改进这段代码?
遗腹:每当我想到这个问题,它都会让我希望@app.after_server_start
装饰品存在.
所以我注意到了另一周通过运行实验,尽管是一种高级语言,你可以通过像这样分配变量来复制变量:
a = 5
b = a
print(b) # 5
b = 3
print(b) # 3
print(a) # 5
Run Code Online (Sandbox Code Playgroud)
...如果你对待词典或者可能以相同的方式列出词典,它就会失败!我在我的代码中创建了一个错误,另一周认为字典以相同的方式工作.发现要制作一个正确的,深层的副本你需要去:
b = dict(a)
Run Code Online (Sandbox Code Playgroud)
无论如何,我忙于使用日期时间对象而我正在操纵它们就好像它们是整数一样,现在开始对这是否合适感到有些紧张.在它工作的地方看起来有点武断,在它没有的地方,我是否每次只是为了检查它的行为而进行实验?可以猜测字符串可能像整数一样工作,但不确定行为在哪里发生变化.
可以看到有人问过这个用于PHP但是对于Python我倾向于认为任何datetime对象的赋值都是正确的,深度复制并且不会意外地与原始变量混淆.有人有确切消息么?
这从几年前的回答显示了如何做jupyter笔记本创建图形为SVG.解决方案是告诉InlineBackend使用svg
输出.
import matplotlib.pyplot as plt
%matplotlib inline
%config InlineBackend.figure_format = 'svg'
plt.plot(...)
Run Code Online (Sandbox Code Playgroud)
这将导致所有图像在笔记本内部以及生成的ipynb文件中以svg格式显示; 该文件将有一行像
"data": { "image/svg+xml": [ "<?xml .....
Run Code Online (Sandbox Code Playgroud)
在里面.
问题是,如果使用%matplotlib notebook
后端,这不起作用.%config InlineBackend
不会更改笔记本后端的任何内容,因此输出文件包含PNG图像
"data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0....
Run Code Online (Sandbox Code Playgroud)
所以问题是:如何让ipynb文件包含使用%matplotlib notebook
后端创建的SVG图像的静态版本?
@mark jay从一个月前发表了一个小评论,他想做我现在想做的事情,但没有回答或暗示这个评论.
在我的代码中,我直接从数据框绘制:
%matplotlib notebook
import pandas as pd
df = pd.read_sql(sql1, connection)
...
...
df.plot(subplots=True, kind='bar')
Run Code Online (Sandbox Code Playgroud)
这个功能非常好,无需导入,matplotlib.pyplot
但也无法强制将图形创建为svg.我想如果基本情况可行,我可以修改绘图代码,因此它不涉及pandas或数据帧.
我试图在我的课程中运行所有的功能,而不是单独输入它们.
class Foo(object):
def __init__(self,a,b):
self.a = a
self.b=b
def bar(self):
print self.a
def foobar(self):
print self.b
Run Code Online (Sandbox Code Playgroud)
我想这样做但是有一个循环,因为我的实际类有大约8-10个函数.
x = Foo('hi','bye')
x.bar()
x.foobar()
Run Code Online (Sandbox Code Playgroud) 在此处的文档中 - https://docs.python.org/3/library/json.html
它说object_pairs_hook
:
object_pairs_hook 是一个可选函数,它将使用任何用有序对列表解码的对象文字的结果调用。将使用 object_pairs_hook 的返回值而不是 dict。此功能可用于实现自定义解码器。如果还定义了 object_hook,则 object_pairs_hook 优先。
在这个答案中有一个相当令人印象深刻的例子。
我不明白什么是“钩子”或者这个功能是如何工作的。文档并没有真正清楚地解释它。我现在想写一个(否则我正在解析的字符串上会出现一堆字符串方法)
有没有人知道有关此功能的教程或对其有足够的了解以详细解释它的工作原理?他们似乎在文档中假设您知道黑匣子中发生了什么json.loads()
所以这一切都在不同的机器上完美运行。不得不让它在我的桌面上工作。pyenv
在那里安装了我刚刚添加的不同版本miniconda3-latest
,它们在提示中很好地显示(.python-version
下面的目录中有一个文件)然后pip install pymysql
在该提示后运行。当我现在在该提示下运行 python 时,它可以正常导入:
(miniconda3-latest) cardamom@pegasus ~/Desktop/Project $ python
Python 3.6.0 |Continuum Analytics, Inc.| (default, Dec 23 2016, 12:22:00)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymysql
>>>
Run Code Online (Sandbox Code Playgroud)
...但是如果我启动 jupyter notebook
(miniconda3-latest) cardamom@pegasus ~/Desktop/Project $ jupyter notebook
[I 13:38:28.714 NotebookApp] [nb_conda_kernels] enabled, 2 kernels found
[I 13:38:29.216 NotebookApp] The port 8888 is already in use, trying another port.
[I …
Run Code Online (Sandbox Code Playgroud) 我收集Text文档(在Node.js中),其中一个文档i
表示为单词列表.考虑到新文档是作为一种文档流出现的,计算这些文档之间相似性的有效方法是什么?
我目前在每个文档中的单词的标准化频率上使用cos相似性.由于可扩展性问题,我不使用TF-IDF(术语频率,反向文档频率),因为我收到的文档越来越多.
我的第一个版本是当前可用的文件开始,计算一个大项-文档矩阵A
,再计算S = A^T x A
,这样S(i, j)
是后(通过归一化后norm(doc(i))
和norm(doc(j))
)文档之间的余弦相似性i
和j
词频率分别为doc(i)
和doc(j)
.
收到新文件后我该怎么办doc(k)
?好吧,我必须计算这个文档与之前所有文档的相似性,这不需要构建一个完整的矩阵.我可以把doc(k) dot doc(j)
所有以前的内在产品j
,结果S(k, j)
,这是伟大的.
S
在Node.js中计算真的很长.实际上太长了!所以我决定创建一个C++模块,它可以更快地完成整个过程.它确实如此!但我不能等待它,我应该能够使用中间结果.而我所说的"不等待它"就是两者
一个.等待计算完成,但也
b.等待矩阵A
建立(这是一个很大的矩阵).
计算new S(k, j)
可以利用文档比所有给定单词(我用来构建整个矩阵A
)的单词少得多的事实.因此,在Node.js中执行它看起来更快,避免了大量额外资源来访问数据.
但有没有更好的方法呢?
注意:我开始计算的原因S
是我可以轻松地A
在Node.js中构建我可以访问所有数据的地方,然后在C++中进行矩阵乘法并将其返回到Node.js中,这会加速整个事情的发展. .但是现在计算S
变得不切实际,它看起来毫无用处.
注2:是的,我不必计算整体S
,我可以计算右上角的元素(或左下角的元素),但这不是问题.时间计算问题不是那个顺序.
一直在使用Python中的时间序列,并使用sm.tsa.seasonal_decompose
.在文档中,他们介绍了这样的函数:
我们添加了一个天真的季节性分解工具,与R的相同
decompose
.
以下是文档及其输出的代码副本:
import statsmodels.api as sm
dta = sm.datasets.co2.load_pandas().data
# deal with missing values. see issue
dta.co2.interpolate(inplace=True)
res = sm.tsa.seasonal_decompose(dta.co2)
res.plot()
Run Code Online (Sandbox Code Playgroud)
他们说这是天真的,但没有关于它有什么问题的免责声明.有人知道吗?
我正在考虑对数据帧进行合并操作,每个数据帧都有大量列.不希望结果具有两个具有相同名称的列.我试图查看两个框架之间共同的列名列表:
import pandas as pd
a = [{'A': 3, 'B': 5, 'C': 3, 'D': 2},{'A': 2, 'B': 4, 'C': 3, 'D': 9}]
df1 = pd.DataFrame(a)
b = [{'F': 0, 'M': 4, 'B': 2, 'C': 8 },{'F': 2, 'M': 4, 'B': 3, 'C': 9}]
df2 = pd.DataFrame(b)
df1.columns
>> Index(['A', 'B', 'C', 'D'], dtype='object')
df2.columns
>> Index(['B', 'C', 'F', 'M'], dtype='object')
(df2.columns).isin(df1.columns)
>> array([ True, True, False, False])
Run Code Online (Sandbox Code Playgroud)
如何在Index对象上操作NumPy布尔数组,以便它只返回一个共同列的列表?
我正在尝试装饰一个已经由@click
命令行装饰和调用的函数。
大写输入的正常装饰可能如下所示:
标准装饰.py
def capitalise_input(f):
def wrapper(*args):
args = (args[0].upper(),)
f(*args)
return wrapper
@capitalise_input
def print_something(name):
print(name)
if __name__ == '__main__':
print_something("Hello")
Run Code Online (Sandbox Code Playgroud)
然后从命令行:
$ python standard_decoration.py
HELLO
Run Code Online (Sandbox Code Playgroud)
单击文档中的第一个示例如下所示:
你好.py
import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
help='The person to greet.')
def hello(count, name):
"""Simple program that greets NAME for a total of COUNT times."""
for x in range(count):
click.echo('Hello %s!' % name)
if __name__ == '__main__':
hello()
Run Code Online (Sandbox Code Playgroud)
从命令行运行时:
$ python hello.py --count=3
Your …
Run Code Online (Sandbox Code Playgroud) python command-line-arguments python-3.x python-decorators python-click
python ×9
python-3.x ×4
pandas ×2
class ×1
datetime ×1
flask ×1
flask-script ×1
json ×1
matplotlib ×1
nlp ×1
node.js ×1
parsing ×1
pyenv ×1
python-click ×1
r ×1
statsmodels ×1
stream ×1
time-series ×1