使用python在current.futures中使用as_completed的意外行为。 - python

我正在努力在python中使用current.futures。我正在尝试遍历大量S3对象。由于帐户,存储区和对象的数量,这可能需要很长时间。比我的STS凭据更长的时间对我有好处,而且足够长的时间我不相信脚本不会被中断。

我希望下面的代码能够正常工作,尽管它确实产生了我在用少量存储桶进行测试时所寻找的输出,但它仅在完全处理完每个存储桶之后才写入完成的文件和输出文件,而不是在以后的返回时才写入。如果被打断,则不会写入完整的文件和输出的文件。即使已经成功处理了许多存储桶。

if __name__ == '__main__':
    args_results = parser.parse_args()

    completed = open(args_results.completed, 'a+')
    out = open(args_results.out, 'a+')  

    done = getCompleted(args_results.completed) 
    todo = getBuckets(args_results.todo)

    with ThreadPoolExecutor(max_workers=10) as executor:
        futures = []
        for item in todo: 
            if item not in done:
                account, bucket = item.split('|')
                futures.append(executor.submit(getBucketInfo, account, bucket))

        for x in as_completed(futures):
            result = x.result()
            out.write(result + '\n')
            completed.write(result['Account'] + '|' + result['Bucket'] + '\n')

我是否误解了as_completed()功能应该如何工作?

python参考方案

打开文件时,我需要添加行缓冲,以便在写入每行时将它们刷新到磁盘。

completed = open(args_results.completed, 'a+', buffering=1)
out = open(args_results.out, 'a+', buffering=1)

问题解决了。

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

Python:如何根据另一列元素明智地查找一列中的空单元格计数? - python

df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Jane', 'Alice','Bob', 'Alice'], 'income…

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

将字符串分配给numpy.zeros数组[重复] - python

This question already has answers here: Weird behaviour initializing a numpy array of string data                                                                    (4个答案)         …