If you are not going to PyCon this year but want to hear some talks live, join SF Python's presentation night on 3/12. Even if you are going to Montreal, come out and support your fellow members by offering constructive feedback to their talks.
In this talk we'll explore different options for interacting with non-Python code from Python, starting with invoking an external process using the subprocess module and ending with integrating external C libraries. We'll discuss tradeoffs encountered when building systems along the way.
* "subprocess" behind the scenes *
There's a whole lot going on when you invoke another process with the functions available from the subprocess module. The Python API is simple, but it turns out that there's a whole lot going on underneath the hood when you call out to another process, and a lot of these details are important to debugging and addressing performance issues. We'll deep dive down into what's going on here and learn about the interface between userspace applications and the Linux kernel.
* wrapping C library code *
With C libraries, we have the option of more tightly integrating with a Python program, which offers us more performance and control than shelling out. We'll learn what a Foreign Function Interface is, and take a look at the different options for integrating C libraries, including ctypes, Cython, and cffi. We'll discuss the pros and cons of these options and make some recommendations for which to use when.
You'll leave this talk with a better understanding of how Unix processes work, knowledge of the options available for integrating C with Python, and perhaps some inspiration on how to use the tools available to you to gain an understanding of a system when you just don't know what's going on.
A reading knowledge of C will be useful but not required.
Speaker Bio: Christine Spang
Christine is a person. Many of her waking hours are currently occupied by Inbox, a startup working to fix email. Some reports have been received of sightings on mountain tops, cliff walls, bicycles, and dance floors, but we're still not quite convinced she ever ventures far from the luminescent glow of a computer monitor.
Christine currently lives in Oakland, California, but back in her Boston days she helped found the famous Boston Python Workshop.
Taba is a distributed aggregation service, currently handling over 6M events per second, with low end-to-end latency. Similar in concept to statsd, Taba can handle orders of magnitude more data, with stronger consistency guarantees. It is built atop Redis using Python with gevent and Cython.
We will discuss the data model used, and how its design impacts process flows, the database schema, network usage, cacheability, etc. We will also describe the cluster architecture, which is based on many identical distributed processes, and uses master-less coordination to automatically distribute load across the cluster.
Finally, we will discuss some of the interesting challenges and solutions encountered. These include:
• Memory fragmentation and ‘ratcheting’ in CPython
• Using generators, greenlets, and queues to great effect in reducing memory usage without sacrificing performance.
• Using Cython to optimize critical sections
◦ Optimizing CPU intensive operations (e.g. distributed reservoir sampling)
◦ Hybrid manual / automatic memory management techniques
Speaker Bio: Kevin Ballard
Originally from Montréal, Kevin studied Mechatronics Engineering at the University of Waterloo, with a focus on software engineering and embedded systems. He has been in Silicon Valley for the past 5 years, where he is currently with TellApart helping to build their high performance data platform service, based primarily on Python. Kevin has also lead TellApart's open source projects, including commandr and Taba.
Looking forward to seeing your RSVP!
Grace, Hy, and Simeon
6:15p - Check-in and mingle, with Pizza and Beer provided by our generous sponsor Yelp!
7:00p - Welcome and announcements
7:10p - Lightning Talk (5 minutes each)
7:30p - Main talk
8:20p - Q & A, followed by advanced mingling
9:30p - Doors close
Gabriel Reyla: Generating better RESTful APIs from your Django Models
Please sign up to give a lightning talk at a future meetup.
Please take note of the important check-in details at Yelp
1. Doors open at 6:15pm to allow enough time for the check-in process. Before 6:15pm, please wait outside without blocking the building entrance.
2. Please update the name on your account to reflect your FIRST NAME and LAST NAME. Hy will be greeting downstairs and Yelp Security will be checking IDs upstairs. If your name on Meetup.com is not the name on your ID, then please enter your full name here.
3. Since alcohol will be served at the event, we ask that any underage attendees RSVP directly to the meet up host.
4. Waiting list folks will be allowed into the event AFTER we admit all confirmed attendees.
Yelp is generously providing pizza, drinks, and beer in addition to their venue space.