小编I Z*_*I Z的帖子

boto dynamodb:有没有办法优化批量写入?

我正在将大量数据索引到 DynamoDB 中,并尝试批量写入以增加实际吞吐量(即加快索引速度)。这是一段代码(是原始来源):

def do_batch_write(items,conn,table):
    batch_list = conn.new_batch_write_list()
    batch_list.add_batch(table, puts=items)
    while True:
            response = conn.batch_write_item(batch_list)
            unprocessed = response.get('UnprocessedItems', None)
            if not unprocessed:
                    break
            # identify unprocessed items and retry batch writing
Run Code Online (Sandbox Code Playgroud)

我正在使用 boto 版本 2.8.0。如果items元素超过 25 个,则会出现异常。有没有办法增加这个限制?此外,我注意到有时,即使items较短,也无法一次尝试处理所有这些。但是这种情况发生的频率或尝试后有多少元素未处理,与 的原始长度之间似乎没有相关性items有没有办法避免这种情况并一次性写出所有内容?现在,最终目标是加快处理速度,而不仅仅是避免重复,因此在连续尝试之间长时间休眠不是一种选择。

谢谢

batch-processing boto amazon-dynamodb

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

为什么python json.dumps抱怨ascii解码?

我的代码中有以下几行

outs = codecs.getwriter('utf-8')(sys.stdout)
# dJSON contains JSON message with non-ASCII chars
outs.write(json.dumps(dJSON,encoding='utf-8', ensure_ascii=False, indent=indent_val))
Run Code Online (Sandbox Code Playgroud)

我收到以下异常:

    outs.write(json.dumps(dJSON,encoding='utf-8', ensure_ascii=False, indent=indent_val))
    File "/usr/lib/python2.7/json/__init__.py", line 238, in dumps
         **kw).encode(obj)
    File "/usr/lib/python2.7/json/encoder.py", line 204, in encode
         return ''.join(chunks)
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 27: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

我通过encoding='utf-8'json.dumps声明中指定,我避免了这种类型的问题.为什么我仍然收到错误?

python json codec

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

Eclipse:不断获取"错误:应用程序需要API版本15.设备API版本为14(Android 4.0.2)."

我一直在安装了API版本15的设备上测试Android应用.我现在必须切换到具有版本14的其他设备(三星Galaxy Nexus,如果它很重要).尽管我从Google API 15到14更改了"项目构建目标",但当我尝试时仍然会收到以下消息在新设备上执行应用程序:

错误:应用程序需要API版本15.设备API版本为14(Android 4.0.2).

清理所有项目没有帮助.重启Eclipse没有帮助.我创建了一个目标= 14的简单的新测试应用程序,它工作正常.

为什么旧项目的更改没有生效?

谢谢!

eclipse android target

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

如何使用 PyDrive 访问团队云端硬盘而不是个人 Google 云端硬盘?

我正在尝试使用 PyDrive 以编程方式列出并下载存储在我可以在浏览器中访问的团队驱动器上的文件。当我这样做时:

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

gauth = GoogleAuth()
drive = GoogleDrive(gauth)

file_list = drive.ListFile(
    {
        'q': "'root' in parents and trashed=false",
        'corpora': "teamDrive",
        'teamDriveId': <team drive ID>,
        'includeTeamDriveItems': "true",
        'supportsTeamDrives': "true"
    }
).GetList()
for file1 in file_list:
    print('title: %s, id: %s' % (file1['title'], file1['id']))
Run Code Online (Sandbox Code Playgroud)

我只得到我个人驱动器上的文件列表,而不是团队驱动器。我究竟做错了什么?

注意1:<team drive ID>通过在浏览器中打开团队驱动器(根文件夹)并复制“ https://drive.google.com/drive/folders/ ”之后的所有内容来获得

注2:浏览器弹出drive.ListFile并给出Authentication successful.

google-drive-api pydrive google-drive-shared-drive

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

在Python中解析JSON:如何在更改格式后让has_key()再次运行?

我有以下Python代码块:

data = json.loads(line)
if data.has_key('derivedFrom'):
     dFin = data['derivedFrom']
     if dFin.has_key('derivedIds'):
Run Code Online (Sandbox Code Playgroud)

这曾经在JSON块上正常工作,如下所示:

"derivedFrom": {"source": "FOO", "model": "BAR", "derivedIds": ["123456"]}
Run Code Online (Sandbox Code Playgroud)

现在格式改为:

"derivedFrom": "{\"source\": \"FOO.\", \"model\": \"BAR\", \"derivedIds\": [\"123456\"]
Run Code Online (Sandbox Code Playgroud)

因此,Python块中的最后一行会引发以下异常:

'unicode' object has no attribute 'has_key'
Run Code Online (Sandbox Code Playgroud)

有没有办法预处理JSON has_key再次工作?

python unicode json

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

Python:在字符串中查找所有字符串是否有更可扩展的方法?

我手头有一个相当简单的任务:给定一个(小写的)big字符串和一个(小写的)字符串数组,small如果所有small字符串都在字符串中,我需要产生1 big,否则为0.所以这样做的pythonic方法就是:

>>> big = 'the quick brown fox jumps over the lazy dog'
>>> smallTrue = ["quick","dog","fox"]
>>> smallFalse = ["quick","fox","wolf"]
>>> int(all([s in big for s in smallTrue]))
1
>>> int(all([s in big for s in smallFalse]))
0
Run Code Online (Sandbox Code Playgroud)

问题在于是否有一种不同的方法可以使得0和1更好地扩展到更长的bigs(显然更长)(想想"典型"科学论文的摘要)加上大量small更长的数组?

缩放意味着处理时间,因为我的机器有很多RAM.因此,如果我需要以某种方式预处理数据,这将需要更多的RAM,这将是好的.

问的原因是因为我遇到了一些类似字符串操作任务的可伸缩性问题.

python string lookup scalability string-matching

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

组合和排序元组列表的最快方法是什么?

我有一个元组列表列表.每个元组都有这种形式(string,int),例如

lst = list()
lst.append([('a',5),('c',10),('d',3),('b',1)])
lst.append([('c',14),('f',4),('b',1)])
lst.append([('d',22),('f',2)])
Run Code Online (Sandbox Code Playgroud)

将其int视为不同文本块中每个字符串的计数.

我需要做的是产生一个最常N出现的字符串列表及其累积计数.所以在上面的例子中,a出现5次,b出现两次,c出现24次等等.如果N=2,那么我将不得不生成一对并行列表['d','c']和/ [25,24]或元组列表[('d',25),('c',24)].我需要尽快完成.我的机器有很多RAM,所以内存不是问题.

我有这个实现:

import numpy as np
def getTopN(lst,N):

    sOut = []
    cOut = []

    for l in lst:
        for tpl in l:
            s = tpl[0]
            c = tpl[1]

            try:
                i = sOut.index(s)
                cOut[i] += c
            except:
                sOut.append(s)
                cOut.append(c)

    sIndAsc = np.argsort(cOut).tolist()
    sIndDes = sIndAsc[::-1]
    cOutDes = [cOut[sir] for sir in sIndDes]
    sOutDes …
Run Code Online (Sandbox Code Playgroud)

python sorting tuples list

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