Skip to content

Instantly share code, notes, and snippets.

View mikeckennedy's full-sized avatar

Michael Kennedy mikeckennedy

View GitHub Profile
@mikeckennedy
mikeckennedy / download_python_bytes.py
Created November 25, 2016 08:04
Python script to download MP3s from Python Bytes
# requires request and Python 3
import requests
import sys
import os
from xml.etree import ElementTree
def main():
rss_url = 'https://pythonbytes.fm/episodes/rss'
resp = requests.get(rss_url)
@mikeckennedy
mikeckennedy / snap-ci-talkpythontraining.config
Created August 5, 2016 14:26
The Snap CI config settings to checkout, setup and test Talk Python Training at https://snap-ci.com
# Setup a virtual environment (running Python 3.5 foundation)
python -m venv ~/.python3_venv
# Activate the virtual environment
source ~/.python3_venv/bin/activate
# Install a few dependencies needed to bootstrap things
pip install setuptools nose mailchimp
# Register the website package (pyramid web app) as a package
# Parse this busted file:
#
# A,B,C,D,E,
# A,B,C,D,E,
# A,B,C,D,E, A,B,C,D,E,
#
# A,B,C,D,E,
# A,B,C,D,E,
data = []
@mikeckennedy
mikeckennedy / memory_per_via_slots.py
Last active May 25, 2016 15:12
Custom types store their data in individualized, dynamic dictionaries via self.__dict__. Using __slots__ to limit available attribute names and move the name/key storage outside the instance to a type level can significantly improve memory usage. See EOF for perf numbers.
# ############ __slots__ for improved memory usage #############
# Create by Michael Kennedy (@mkennedy)
#
# Overview:
# Custom types store their data in individualized, dynamic dictionaries
# via self.__dict__. Using __slots__ to limit available attribute names
# and move the name/key storage outside the instance to a type level
# can significantly improve memory usage. See EOF for perf numbers.
#
@mikeckennedy
mikeckennedy / dict_vs_list_speed_test.py
Created May 12, 2016 06:20
If you had a large set of data and you need to "find" a subset of elements by some value (equality not a computation, such as between two values), it is dramatically faster. See the output comments at the very end of this file for numbers.
# ############ DICTIONARY vs. LIST LOOKUP PERF #############
# Create by Michael Kennedy (@mkennedy)
#
# Overview:
# If you had a large set of data and you need to "find" a subset
# of elements by some value (equality not a computation, such as
# between two values), it is dramatically faster. See the output
# comments at the very end of this file for numbers.
#
import collections
@mikeckennedy
mikeckennedy / monitor.py
Last active January 27, 2016 18:49
Add opbeat integration to Pyramid web apps
import opbeat
import opbeat.instrumentation
import opbeat.instrumentation.control
from pyramid.events import NewRequest
from pyramid.events import subscriber
from pyramid.httpexceptions import HTTPRedirection, HTTPException
opbeat_is_debug_mode = False
opbeat.instrumentation.control.instrument()