小编ahu*_*ura的帖子

有没有办法检查子进程是否仍在运行?

我在Python中使用subprocess.Popen启动了许多子进程.我想检查一个这样的过程是否已经完成.我发现了两种检查子进程状态的方法,但两者似乎都迫使进程完成.一种是使用process.communicate()并打印返回代码,如解释在这里.另一个是简单地调用process.wait()并检查它是否返回0.

有没有办法检查进程是否仍在运行而不等待它完成?

python subprocess

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

如何返回使用变量值的函数?

我想编写一个返回函数列表的函数.作为一个MWE,这是我的函数尝试,它给出了三个函数,它们将0,1和2添加到输入数字:

def foo():
    result = []
    for i in range(3):
        temp = lambda x: x + i
        print(temp(42))  # prints 42, 43, 44
        result.append(temp)
    return result

for f in foo():
    print(f(42))  #prints 44, 44, 44
Run Code Online (Sandbox Code Playgroud)

与我的期望相反,每个函数最终使用i的最后一个值.当我将一个列表用作函数的参数但Python实际上使用指向列表的指针时,我经历过类似的行为,但这里是一个整数,所以我不明白这里发生了什么.我正在运行Python 3.5.

python python-3.x

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

简单的多处理池挂在 Jupyter 笔记本中

我正在尝试使用 python 版本 3.7.0 在 Jupyter 笔记本中运行一些多重处理。然而,即使是一个非常简单的例子似乎也会无限期地挂起。阅读此答案后,我尝试在池上显式调用 .close 和 .join,但它仍然挂起。示例代码如下,谁能告诉我出了什么问题?

import multiprocessing as mp

def fun(x):
    return 2*x

with mp.Pool() as pool:
    args = list(range(10))
    res = pool.map(fun, args)
    pool.close()
    pool.join()
Run Code Online (Sandbox Code Playgroud)

python multiprocessing python-multiprocessing jupyter-notebook

9
推荐指数
2
解决办法
5375
查看次数

PyCharm 可以重用控制台来运行代码吗?

我目前正在尝试 PyCharm(来自 Anaconda 发行版的 Python 3.5),但找不到在已经打开的控制台中运行代码的方法。例如,请考虑以下代码:

from time import time
now = time()
from inspect import signature
import numpy as np
import scipy as sp
import sympy
import sys
import matplotlib.pyplot as plt
print(time() - now)
Run Code Online (Sandbox Code Playgroud)

如果在 Spyder IDE 中运行,第一次运行大约需要 2 秒,但后续运行需要几微秒,因为模块已经加载。在 PyCharm 中,每次运行需要 2 秒。是否可以让 PyC​​harm 不重新导入模块以更快地运行?

python pycharm

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

在 Keras 模型中获取中间层输出的正确方法?

我已经在 Keras 中训练了一个模型,并希望从中间层提取输出。该模型包含 dropout 层,我想绝对确保在执行此操作时不会丢失任何内容。

根据文档,可以像这样提取图层的输出:

layer_name = 'my_layer'
intermediate_layer_model = Model(inputs=model.input,
                                 outputs=model.get_layer(layer_name).output)
intermediate_output = intermediate_layer_model.predict(data)
Run Code Online (Sandbox Code Playgroud)

但是,文档还展示了如何使用 Keras 函数执行此操作:

get_3rd_layer_output = K.function([model.layers[0].input, K.learning_phase()],
                                  [model.layers[3].output])

# output in test mode = 0
layer_output = get_3rd_layer_output([x, 0])[0]

# output in train mode = 1
layer_output = get_3rd_layer_output([x, 1])[0]
Run Code Online (Sandbox Code Playgroud)

在这里, learning_phase() 标志告诉 keras 是否实际使用 dropout 和仅在训练期间使用的类似东西。

我的问题是,如果我使用第一种方法,是否会自动停用 dropout,或者我是否需要执行类似于设置学习阶段标志的操作(如在第二种方法中所做的那样)。

python neural-network theano keras tensorflow

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

如何在 VSCode 中显示/预览 python 文档字符串?

我正在使用 VSCode 和 Jupyter 笔记本开发一个 Python 项目。在笔记本中工作时,我可以通过按 Shift+Tab 键调出给定方法的文档字符串。这会预览与执行相同的文本print(method_name.__doc__),请参见下面的屏幕截图。

Jupyter 笔记本中的文档字符串预览

上面清楚地说明了该方法需要哪些参数以及它返回什么,这对我很有帮助。

我想在 VSCode 中做同样的事情。看看这个问题的答案,有一些热键可以查看文档(ctrl+k ctrl i、ctrl+space)。然而,这些不显示相同的文档字符串,而是一些近乎难以理解的东西,对我来说不是很有帮助 - 请参见下面的屏幕截图。

我可以做什么来快速预览 VSCode 中的文档字符串?

VSCode 中的文档预览尝试

python visual-studio-code vscode-extensions

5
推荐指数
0
解决办法
2286
查看次数

如何让请求“get”遵循所有重定向

我正在编写一个脚本来找出大量缩短的 URL 导致的完整 URL。我使用 requests 模块来跟踪重定向并获取在浏览器中输入 URL 时最终会到达的 URL。这适用于几乎所有链接缩短程序,但由于我无法弄清楚的原因,对于 disq.us 形式的 URL 失败(即,对于 disq.us URL,我得到与我输入的相同的 url,而当我在浏览器中输入它时,我得到重定向)

下面的代码片段可以正确解析 bit.ly 缩短的链接,但会因 disq.us 链接而失败。我使用 Python 3.6.4 和 requests 模块的 2.18.4 版本运行它。SO 不允许我在问题中包含缩短的 URL,因此我将把它们留在评论中。

import requests

user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36'

url1 = "SOME BITLY URL"
url2 = "SOME DISQ.US URL"

for url in [url1, url2]:
    s = requests.Session()
    s.headers['User-Agent'] = user_agent
    r = s.get(url, allow_redirects=True, timeout=10)
    print(r.url)
Run Code Online (Sandbox Code Playgroud)

python web-scraping python-3.x python-requests

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

使用numpy,是否可以根据其他矩阵定义矩阵?

例如,我想做这样的事情

import numpy as np
A = np.array([[1,2,3],[4,5,6],[7,8,9]])
B = np.array([[1,1],[2,2],[3,3]])
C = np.zeros((2,2))
D = np.array([[A, B], [B.T, C]])
Run Code Online (Sandbox Code Playgroud)

生产带有元素的5x5 ndarray

1, 2, 3, 1, 1
4, 5, 6, 2, 2
7, 8, 9, 3, 3
1, 2, 3, 0, 0
1, 2, 3, 0, 0
Run Code Online (Sandbox Code Playgroud)

python numpy

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

如何在 Jupyter 笔记本中显示之前生成的绘图?

我正在运行 Jupyter 笔记本来绘制一些图:

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x = np.arange(0, 7, 0.01)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, np.sin(x))
Run Code Online (Sandbox Code Playgroud)

当我执行此操作时,绘图将被渲染并显示为输出。但是,我想稍后在笔记本中查看它,但 plt.show() 不执行任何操作,并且Fig.show() 警告我 matplotlib 正在使用非 GUI 后端。然而,我尝试过使用这个答案中列出的所有后端,但没有运气,而且我很困惑,如果我使用非 GUI 后端,那么绘图如何首先呈现。然而,fig.savefig(filename) 工作正常。

python matplotlib jupyter-notebook

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

如何在没有输入字段的情况下在按键上运行 javascript?

我正在编写一个简单的网站,并希望在用户按下键盘上的按钮时运行一些简单的 javascript。alert("Hello!");当用户按下回车键时运行或显示模式框这样简单的事情就可以了。

搜索了一段时间后,我只能找到适用于页面包含输入文本字段的解决方案。没有它可能吗?

html javascript css

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

从neo4j查询结果构建NetworkX图?

我试图了解如何查询 Neo4j 数据库,并将结果转换为 networkx 图。我可以查询(电影图)数据库并获得结果,但我可以找到一种简单的方法将结果转换为 networkx 图。是否可以执行以下操作?

from neo4j import GraphDatabase
import networkx as nx

driver = GraphDatabase.driver('bolt://localhost:7687', auth=("neo4j", "hunter2"))

query = """
MATCH (p:Person)-[:ACTED_IN]->(m:Movie)
WHERE toLower(m.title) CONTAINS "you"
RETURN *
"""

with driver.session() as session:
    result = session.run(query)

# This bit doesn't work
G = nx.Graph(result)
Run Code Online (Sandbox Code Playgroud)

python neo4j graph-databases networkx cypher

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

如何使用 xgboost 模型对数据框中的单行进行预测

我正在将xgboost模型拟合到存储在数据框中的一些数据。拟合后,我想在数据帧的单行上运行分类器/回归器的 .predict 方法。

下面是一个最小的示例,它在整个数据帧上预测良好,但仅在数据帧的第二行上运行时崩溃。

from sklearn.datasets import load_iris
import xgboost

# Load iris data such that X is a dataframe
X, y = load_iris(return_X_y=True, as_frame=True)

clf = xgboost.XGBClassifier()
clf.fit(X, y)

# Predict for all rows - works fine
y_pred = clf.predict(X)

# Predict for single row. Crashes.
# Error: '('Expecting 2 dimensional numpy.ndarray, got: ', (4,))'
secondrow = X.iloc[1]
secondpred = clf.predict(secondrow)
Run Code Online (Sandbox Code Playgroud)

错误

from sklearn.datasets import load_iris
import xgboost

# Load iris data such that X is a …
Run Code Online (Sandbox Code Playgroud)

python pandas xgboost

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

如何使用 pyplot/gridspec 增加单个子图的大小?

我试图在 6x4 网格中绘制 23 个图形,其中一个图形占据其他图形宽度的两倍。我正在使用 gridspec ,我当前的代码是:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import gridspec

x = np.arange(0, 7, 0.01)

fig = plt.figure(figsize=(6, 4))
gs = gridspec.GridSpec(nrows=6, ncols=4)

for n in range(22):
    ax = fig.add_subplot(gs[n])
    ax.plot(x, np.sin(0.2*n*x))

corrax = fig.add_subplot(gs[22])
fig.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

这会产生以下结果:

图格

我想增加底行中最右边图的宽度,以便占用该行中的剩余空间。有没有办法做到这一点?

python matplotlib

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