我在 python3.4.3 上使用 SqlAlchemy 来管理 MySQL 数据库。我正在创建一个表:
from datetime import datetime
from sqlalchemy import Column, text, create_engine
from sqlalchemy.types import TIMESTAMP
from sqlalchemy.dialects.mysql import BIGINT
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class MyClass(Base):
__tablename__ = 'my_class'
id = Column(BIGINT(unsigned=True), primary_key=True)
created_at = Column(TIMESTAMP, default=datetime.utcnow, nullable=False)
updated_at = Column(TIMESTAMP, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)
param1 = Column(BIGINT(unsigned=True), server_default=text('0'), nullable=False)
Run Code Online (Sandbox Code Playgroud)
当我创建这个表时:
engine = create_engine('{dialect}://{user}:{password}@{host}/{name}'.format(**utils.config['db']))
Base.metadata.create_all(engine)
Run Code Online (Sandbox Code Playgroud)
我得到:
mysql> describe my_class;
+----------------+---------------------+------+-----+---------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra | …Run Code Online (Sandbox Code Playgroud) 我还不完全理解 asyncio 和 aiohttp 是如何工作的。
我正在尝试从 URL 列表中发出一堆异步 api 请求,并将它们保存为变量,以便稍后处理它们。
到目前为止,我正在生成没有问题的列表并设置请求框架。
urls = []
for i in range(0,20):
urls.append('https://api.binance.com/api/v1/klines?symbol={}&interval=
{}&limit={}'.format(pairs_list_pairs[i],time_period,
pull_limit))
import asyncio
import aiohttp
async def request(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as resp:
return await resp.text()
async def main():
results = await asyncio.gather(
request(urls[0]),
request(urls[1]),
)
print(len(results))
print(results)
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(main())
loop.run_until_complete(loop.shutdown_asyncgens())
finally:
loop.close()
Run Code Online (Sandbox Code Playgroud)
如果我使用索引手动一一输入我的请求(如下所示),我就可以发出请求。但问题是我的列表中有超过 100 个 api 请求,我不想手动输入这些请求。如何迭代我的列表?另外,如何将结果保存到变量中?当脚本结束时,它不会在任何地方保存“结果”。
async def main():
results = await asyncio.gather(
request(urls[0]),
request(urls[1]),
)
print(len(results))
print(results)
Run Code Online (Sandbox Code Playgroud)
下面是一些复制代码的示例 URL: …
我迷失在这里,Python 2.7,我有一本字典mt,我使用的get()方法,文档说:
get(key[, default])如果key在字典中,则返回key的值,否则返回default.如果未给出default,则默认为None,因此此方法永远不会引发aKeyError.
但我还是得到了
File "/home/ubuntu/subscription-workers/commands/dr/rebilling.py", line 48, in rebill
if mt.get('is_rebill', 0) == 1:
KeyError: 'is_rebill'
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
这mt是正常的dict,有时没有钥匙.
我在 python 的 scikit learn 中使用聚类模块,我想使用归一化欧几里德距离。这个(我知道的)没有内置距离。这是一个列表。
因此,我想使用可调用对象实现我自己的归一化欧几里得距离。该函数是我的distance模块的一部分,称为distance.normalized_euclidean_distance. 它采用三个输入: X,Y,和SD。
但是,归一化欧几里得距离需要总体样本的标准差。但是,scipy 中的成对距离只允许两个输入:X和Y。
我如何让它接受额外的论点?
我试着把它作为 a **kwarg,但这似乎不起作用:
cluster = DBSCAN(eps=1.0, min_samples=1,metric = distance.normalized_euclidean, SD = stdv)
Run Code Online (Sandbox Code Playgroud)
这里distance.normalized_euclidean是发生在两个数组,我写的功能,X以及Y并计算它们之间的归一化欧氏距离。
...但这会引发错误:
TypeError: __init__() got an unexpected keyword argument 'SD'
Run Code Online (Sandbox Code Playgroud)
使用附加关键字参数的方法是什么?
这里说Any further parameters are passed directly to the distance function.,这让我认为这是可以接受的。
python scipy euclidean-distance keyword-argument scikit-learn
例如,我有这些变量
a = [1,2]
b = [3,4]
Run Code Online (Sandbox Code Playgroud)
如果我使用zip()它的功能,结果将是:
[(1, 3), (2, 4)]
Run Code Online (Sandbox Code Playgroud)
但我有这个清单:
a = [[1,2], [3,4]]
Run Code Online (Sandbox Code Playgroud)
而且,我需要和第一个结果一样:[(1, 3), (2, 4)].但是,当我这样做时:
zip(a)
Run Code Online (Sandbox Code Playgroud)
我明白了:
[([1, 2],), ([3, 4],)]
Run Code Online (Sandbox Code Playgroud)
我必须做什么?
我已经将collections函数中的Counter函数应用到列表中.在我这样做之后,我不清楚新数据结构的内容将被表征为什么.我也不确定访问元素的首选方法是什么.
我做过类似的事情:
theList = ['blue', 'red', 'blue', 'yellow', 'blue', 'red']
newList = Counter(theList)
print newList
Run Code Online (Sandbox Code Playgroud)
返回:
Counter({'blue': 3, 'red': 2, 'yellow': 1})
Run Code Online (Sandbox Code Playgroud)
如何访问每个元素并打印出如下内容:
blue - 3
red - 2
yellow - 1
Run Code Online (Sandbox Code Playgroud) 我正在使用random.shuffle洗牌2D numpy数组.我遇到了以下问题:
import numpy as np
from random import shuffle as sf
b = np.array([1,2,3,4,5])
print b
# [1 2 3 4 5]
sf(b)
print b
# [1 4 5 3 2]
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print a
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
sf(a)
print a
# [[1 2 3]
# [4 5 6]
# [1 2 3]]
Run Code Online (Sandbox Code Playgroud)
结果表明,当改组一维数组时,一切都是正确的.但是在改组2D阵列时,结果变得奇怪.
为什么抛弃原始数组的第三行并将第一行重复两次?
我知道可以有解决方案来解决这个问题,例如首先洗牌指示行ID的一维数组,然后按照混洗ID的顺序提取二维数组.但我确实希望弄清楚random.shuffle我的代码的实现或错误会发生什么.
WKWebViewConfiguration:
mediaPlaybackRequiresUserAction 自 iOS 9 起已弃用
在WKWebViewConfiguration:
@available(iOS, introduced: 8.0, deprecated: 9.0)
open var mediaPlaybackRequiresUserAction: Bool
Run Code Online (Sandbox Code Playgroud)
并由 Apple 指定
mediaPlaybackRequiresUserAction
已弃用的属性。相反,使用 mediaTypesRequiringUserActionForPlayback
WKWebViewConfiguration:
根据 Apple 的文档mediaTypesRequiringUserActionForPlayback,仅适用于 iOS 10+。
在WKWebViewConfiguration:
@available(iOS 10.0, *)
open var mediaTypesRequiringUserActionForPlayback: WKAudiovisualMediaTypes
Run Code Online (Sandbox Code Playgroud)所以这是我的问题:
因为mediaPlaybackRequiresUserActioniOS 9 已弃用,mediaTypesRequiringUserActionForPlayback仅适用于 iOS 10+,我可以为 iOS 9 使用什么?
我想比较两个日期.此代码有效:
import datetime
todays_date = datetime.date.today()
date1 = datetime.date(2006, 3, 15)
date2 = datetime.date(2009, 4, 30)
print(date1 != date2)
print(date1 == 0)
Run Code Online (Sandbox Code Playgroud)
它产生:
True
False
Run Code Online (Sandbox Code Playgroud)
那些代码不起作用,我不知道为什么:
import datetime
todays_date = datetime.date.today()
date1 = datetime.date(2006, 3, 15)
date2 = datetime.date(2009, 4, 30)
print(date1 != date2)
print(date1 >= 0)
Run Code Online (Sandbox Code Playgroud)
它会产生以下错误:
File 'datetime.py', Line 363: AttributeError: 'int' object has no attribute '__name__'
Run Code Online (Sandbox Code Playgroud)
请注意,所有我改变的是==对>=的,为什么不相等的比较结果True或False,而不是在错误comparaison结果还大吗?
我将不胜感激任何帮助!
这是我在此处发布的问题的后续跟踪:在AWS实例g2.2xlarge上使用TensorFlow运行卷积神经网络时出现大图像的内存错误
我使用TensorFlow在Python中构建了一个CNN模型,并在NVIDIA GRID K520 GPU上运行它.它可以在64x64图像下正常运行,但会产生128x128图像的内存错误(即使输入只包含1个图像).
错误说Ran out of memory trying to allocate 2.00GiB.2GiB是我第一个完全连接的层的大小(输入:128*128*2(channels)输出:) 128*128 * 4 bytes = 2.14748 GB = 2.0 GiB.
从这里,我可以看到GRID K520具有8GB = 7.45GiB内存.当我开始运行我的代码时,我也看到了输出:Total memory: 3.94GiB, Free memory: 3.91GiB.
我的问题是,所有这些数字之间的关系是什么:如果GPU上有7.45GiB内存,为什么总内存只有3.94GiB,最重要的是,为什么GPU不能分配2GiB内存,这只占总数的一半以上记忆?(我不是计算机科学家,所以详细的答案很有价值.)
一些更具体的信息,以防它有用:我尝试使用allow_growth和per_process_gpu_memory_fraction.仍然得到内存错误,但也有一些内存统计(如果有人可以向我解释这些数字,真的很感激):
allow_growth = True
Stats:
Limit: 3878682624
InUse: 2148557312
MaxInUse: 2148557312
NumAllocs: 13
MaxAllocSize: 2147483648
allow_growth = False
Stats:
Limit: 3878682624
InUse: 3878682624
MaxInUse: 3878682624
NumAllocs: 13
MaxAllocSize: 3877822976
per_process_gpu_memory_fraction = 0.5
allow_growth …Run Code Online (Sandbox Code Playgroud) python ×9
python-3.x ×2
aiohttp ×1
arrays ×1
collections ×1
counter ×1
datetime ×1
dictionary ×1
ios9 ×1
list ×1
memory ×1
mysql ×1
numpy ×1
python-2.7 ×1
request ×1
scikit-learn ×1
scipy ×1
shuffle ×1
sqlalchemy ×1
tensorflow ×1
wkwebview ×1