Skip to content

Instantly share code, notes, and snippets.

@qpleple
Created June 16, 2015 16:41
Show Gist options
  • Select an option

  • Save qpleple/8a02673c158244eb81a8 to your computer and use it in GitHub Desktop.

Select an option

Save qpleple/8a02673c158244eb81a8 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 114,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Initialisation d'une collection Mongo avec 100 documents\n",
"\n",
"from pymongo import MongoClient\n",
"\n",
"collection = MongoClient().lerni_dev.iterators\n",
"collection.drop()\n",
"\n",
"for i in range(100):\n",
" collection.insert({'value': i})"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Fonction pour faire des chunks depuis un itérateur\n",
"# depuis la doc officielle des itérateurs\n",
"# https://docs.python.org/2/library/itertools.html#recipes\n",
"\n",
"from itertools import izip_longest\n",
"\n",
"def grouper(iterable, n):\n",
" args = [iter(iterable)] * n\n",
" return izip_longest(fillvalue=None, *args)"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('A', 'B', 'C')\n",
"('D', 'E', 'F')\n",
"('G', None, None)\n"
]
}
],
"source": [
"# Exemple simple\n",
"# Note : tous les chunk ont la même taille\n",
"# le dernier est rempli avec des None\n",
"\n",
"for g in grouper('ABCDEFG', 3):\n",
" print g"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"({u'value': 0}, {u'value': 1}, {u'value': 2}, {u'value': 3}, {u'value': 4}, {u'value': 5}, {u'value': 6}, {u'value': 7}, {u'value': 8}, {u'value': 9}, {u'value': 10}, {u'value': 11}, {u'value': 12}, {u'value': 13}, {u'value': 14}, {u'value': 15}, {u'value': 16}, {u'value': 17}, {u'value': 18}, {u'value': 19}, {u'value': 20}, {u'value': 21}, {u'value': 22}, {u'value': 23}, {u'value': 24}, {u'value': 25}, {u'value': 26}, {u'value': 27}, {u'value': 28}, {u'value': 29}, {u'value': 30}, {u'value': 31}, {u'value': 32}, {u'value': 33}, {u'value': 34}, {u'value': 35}, {u'value': 36}, {u'value': 37}, {u'value': 38}, {u'value': 39})\n",
"\n",
"({u'value': 40}, {u'value': 41}, {u'value': 42}, {u'value': 43}, {u'value': 44}, {u'value': 45}, {u'value': 46}, {u'value': 47}, {u'value': 48}, {u'value': 49}, {u'value': 50}, {u'value': 51}, {u'value': 52}, {u'value': 53}, {u'value': 54}, {u'value': 55}, {u'value': 56}, {u'value': 57}, {u'value': 58}, {u'value': 59}, {u'value': 60}, {u'value': 61}, {u'value': 62}, {u'value': 63}, {u'value': 64}, {u'value': 65}, {u'value': 66}, {u'value': 67}, {u'value': 68}, {u'value': 69}, {u'value': 70}, {u'value': 71}, {u'value': 72}, {u'value': 73}, {u'value': 74}, {u'value': 75}, {u'value': 76}, {u'value': 77}, {u'value': 78}, {u'value': 79})\n",
"\n",
"({u'value': 80}, {u'value': 81}, {u'value': 82}, {u'value': 83}, {u'value': 84}, {u'value': 85}, {u'value': 86}, {u'value': 87}, {u'value': 88}, {u'value': 89}, {u'value': 90}, {u'value': 91}, {u'value': 92}, {u'value': 93}, {u'value': 94}, {u'value': 95}, {u'value': 96}, {u'value': 97}, {u'value': 98}, {u'value': 99}, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None)\n",
"\n"
]
}
],
"source": [
"# Exemple avec mongo\n",
"# Note : ici aussi, le dernier chunk est rempli avec des None\n",
"\n",
"cursor = collection.find({}, {'_id': False})\n",
"\n",
"for c in grouper(cursor, 40):\n",
" print c\n",
" print "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment