<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:blip="http://blip.tv/dtd/blip/1.0" xmlns:yv="http://video.yahooapis.com/v2/video/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:amp="http://www.adobe.com/amp/1.0" xmlns:dcterms="http://purl.org/dc/terms" xmlns:gm="http://www.google.com/schemas/gm/1.1" xmlns:mediaad="http://blip.tv/dtd/mediaad/1.0" version="2.0">
  <channel>
    <title>Recent Posts - Blip</title>
    <link>http://blip.tv</link>
    <description>Recent Posts - Blip - Blip</description>
    <language>en-us</language>
    <generator>http://blip.tv</generator>
    <lastBuildDate>Wed, 15 Apr 2009 13:19:04 +0000</lastBuildDate>
    <pubDate>Wed, 15 Apr 2009 13:19:04 +0000</pubDate>
    <item>
      <guid isPermaLink="false">FE41EBE2-29BF-11DE-808F-9DA5A48F66B2</guid>
      <link>http://blip.tv/pycon-us-videos-2009-2010-2011/a-curious-course-on-coroutines-and-concurrency-part-002-2005913</link>
      <title>A Curious Course on Coroutines and Concurrency (Part 002)</title>
      <blip:user>pycon</blip:user>
      <blip:userid>348873</blip:userid>
      <blip:safeusername>pycon</blip:safeusername>
      <blip:showpath>pycon-us-videos-2009-2010-2011</blip:showpath>
      <blip:show>PyCon US Videos - 2009, 2010, 2011</blip:show>
      <blip:showpage>http://blip.tv/pycon-us-videos-2009-2010-2011</blip:showpage>
      <blip:picture>http://a.images.blip.tv/Pycon-picture309.png</blip:picture>
      <blip:posts_id>2005913</blip:posts_id>
      <blip:item_id>1995823</blip:item_id>
      <blip:item_type>file</blip:item_type>
      <blip:contentRating>TV-UN</blip:contentRating>
      <blip:rating>0.0</blip:rating>
      <blip:datestamp>2009-04-15T13:19:04Z</blip:datestamp>
      <blip:language>English</blip:language>
      <blip:adChannel>Tech,Learning</blip:adChannel>
      <blip:recommendations>0</blip:recommendations>
      <blip:recommendable>0</blip:recommendable>
      <blip:core>0</blip:core>
      <blip:core_value>4</blip:core_value>
      <blip:channel_name>Learning</blip:channel_name>
      <blip:channel_list>Learning,Tech &amp; Gadgets</blip:channel_list>
      <blip:adminRating>1</blip:adminRating>
      <blip:runtime>1926</blip:runtime>
      <blip:embedLookup>g4Vi+rd9Ag</blip:embedLookup>
      <blip:embedUrl type="application/x-shockwave-flash">http://blip.tv/play/g4Vi+rd9Ag</blip:embedUrl>
      <wfw:commentRss>http://blip.tv/comments/?attached_to=post2005913&amp;skin=rss</wfw:commentRss>
      <blip:thumbnail_src>Pycon-ACuriousCourseOnCoroutinesAndConcurrencyPart002433-523.jpg</blip:thumbnail_src>
      <blip:puredescription>[VIDEO HAS ISSUES: bit of clipping start to finish.] If you are a programmer who cares about Python and concurrency, then you should also care about Python coroutines. Although they were first introduced in Python 2.5, coroutines remain one of Python&amp;apos;s most overlooked features---often vaguely described as a curious &amp;quot;extension&amp;quot; of generator functions with little insight as to how they might be applied to real-world problems. This tutorial examines coroutines in a more practical light by showing how they are actually a very elegant way to implement a processing &amp;quot;task.&amp;quot; Using this task abstraction, it is possible to use coroutines to implement processing pipelines, event handling systems, and programs based on cooperative multitasking. Moreover, if you define tasks using coroutines, they can be easily incorporated into more traditional concurrent programs that utilize threads or message passing.</blip:puredescription>
      <blip:smallThumbnail>http://a.images.blip.tv/Pycon-ACuriousCourseOnCoroutinesAndConcurrencyPart002433-523-177.jpg</blip:smallThumbnail>
      <blip:license>Creative Commons Attribution-NonCommercial-ShareAlike 3.0</blip:license>
      <description>

&lt;iframe src="http://blip.tv/play/g4Vi%2Brd9Ag.x?p=1" width="720" height="433" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;embed type="application/x-shockwave-flash" src="http://a.blip.tv/api.swf#g4Vi+rd9Ag" style="display:none"&gt;&lt;/embed&gt;
&lt;br /&gt;

[VIDEO HAS ISSUES: bit of clipping start to finish.] If you are a programmer who cares about Python and concurrency, then you should also care about Python coroutines. Although they were first introduced in Python 2.5, coroutines remain one of Python&amp;apos;s most overlooked features---often vaguely described as a curious &amp;quot;extension&amp;quot; of generator functions with little insight as to how they might be applied to real-world problems. This tutorial examines coroutines in a more practical light by showing how they are actually a very elegant way to implement a processing &amp;quot;task.&amp;quot; Using this task abstraction, it is possible to use coroutines to implement processing pipelines, event handling systems, and programs based on cooperative multitasking. Moreover, if you define tasks using coroutines, they can be easily incorporated into more traditional concurrent programs that utilize threads or message passing.

</description>
      <yv:adInfo>
        <yv:adTargeting>
          <yv:adData>
            <yv:id>YahooPartnerVideoID</yv:id>
            <yv:name>Blip post id</yv:name>
            <yv:value>2005913</yv:value>
          </yv:adData>
        </yv:adTargeting>
      </yv:adInfo>
      <comments>http://blip.tv/file/1995823</comments>
      <category>Conferences and Other Events</category>
      <category>python</category>
      <category>pycon</category>
      <category>conference</category>
      <category>chicago</category>
      <category>2009</category>
      <pubDate>Wed, 15 Apr 2009 13:19:04 +0000</pubDate>
      <enclosure url="http://blip.tv/file/get/Pycon-ACuriousCourseOnCoroutinesAndConcurrencyPart002965.flv" type="video/x-flv" length="140540486"/>
      <itunes:keywords>python, pycon, conference, chicago, 2009</itunes:keywords>
      <itunes:image>http://a.images.blip.tv/Pycon-ACuriousCourseOnCoroutinesAndConcurrencyPart002433-523.jpg</itunes:image>
      <media:keywords>python, pycon, conference, chicago, 2009</media:keywords>
      <media:group>
        <media:content url="http://blip.tv/file/get/Pycon-ACuriousCourseOnCoroutinesAndConcurrencyPart002433.mp4" blip:role="Source" blip:vcodec="ffh264" blip:acodec="faad" expression="full" fileSize="1043871584" height="480" isDefault="true" type="video/mp4" width="720">
          <mediaad:content position="preroll" provider="freewheel"/>
        </media:content>
        <media:content url="http://blip.tv/file/get/Pycon-ACuriousCourseOnCoroutinesAndConcurrencyPart002860.mp3" blip:role="web" blip:vcodec="" blip:acodec="mp3" expression="full" fileSize="43678170" height="" isDefault="false" type="audio/mpeg" width=""/>
        <media:content url="http://blip.tv/file/get/Pycon-ACuriousCourseOnCoroutinesAndConcurrencyPart002965.flv" blip:role="web" blip:vcodec="ffvp6f" blip:acodec="mp3" expression="full" fileSize="140540486" height="480" isDefault="false" type="video/x-flv" width="655"/>
        <media:content url="http://blip.tv/file/get/Pycon-ACuriousCourseOnCoroutinesAndConcurrencyPart002178.mp3" blip:role="web" blip:vcodec="" blip:acodec="mp3" expression="full" fileSize="43678170" height="" isDefault="false" type="audio/mpeg" width=""/>
      </media:group>
      <media:player url="http://blip.tv/file/1995823">&lt;iframe src="http://blip.tv/play/g4Vi%2Brd9Ag.x?p=1" width="720" height="433" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;embed type="application/x-shockwave-flash" src="http://a.blip.tv/api.swf#g4Vi+rd9Ag" style="display:none"&gt;&lt;/embed&gt;</media:player>
      <media:title>A Curious Course on Coroutines and Concurrency (Part 002)</media:title>
      <media:thumbnail url="http://a.images.blip.tv/Pycon-ACuriousCourseOnCoroutinesAndConcurrencyPart002433-523.jpg"/>
      <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
      <geo:lat>41.879535</geo:lat>
      <geo:long>-87.624333</geo:long>
    </item>
  </channel>
</rss>
