greenlet

Giovedì 11 Dicembre | Introduzione alle coroutine in C | di Michele Dionisio

Abstract

Ogni programmatore ha imparato ad affrontare i problemi con metodologie top-down o bottom-up, generalmente affrontando la programmazione come processo di scomposizione di problemi in problemi più semplici, più piccolì. Questa sessione ha lo scopo di insinuare il dubbio se questa sia veramente la strada più naturale per la mente. Affronteremo quindi la programmazione cooperativa, per risolvere pattern standard, non tramite un approccio a thread ma estendendo il concetto di sub-routine in coroutine.

Argomenti trattati

  1. problema produttore consumatore
  2. generatori e costrutto yield in Python. Uso di next e send (dabeaz.com/coroutines/)
  3. problema produttore consumatore risolto con macchine a stati (codice di Simon Tatham) (in C)
  4. stesso problema con i cambi di contesto (in C e debugger in mano)
sguardo rapido a setcontext e getcontext nella glibc (in assembly) collaborazione con uno scheduler (in C, abbandoniamo il debugger in favore dei log) collaborazione con una programmazione a eventi (libevent) e concetto di greenlet (in C)

Requisiti  

  • Linux  
  • gcc
  • gdb
  • cmake
  • Un minimo di esperienza di assembly e su come funzionano le chiamate a funzione.

 

Relatore

Michele Dionisio si è appassionato all'informatica quando, da piccolo, scambiò il Turbo Pascal per un gioco. Ha finito per laurearsi in Ingegneria Elettronica, per imparare a riparare il pc su cui girava l'oramai vecchio turbo pascal. Lavorativamente ha abbandonato l'automazione industriale quando i robot che muoveva gli hanno dimostrato fisicamente cosa è un “baco”. E’ passato quindi dalla programmazione in ambienti enterprise, embedded e in sicurezza. Spera in futuro di riuscire a pubblicare un libro: “The Incredible Programming”, per raccontare tutto quello che ha visto fare nel codice e che non si sa per quale alchimia abbia funzionato.

Informazioni pratiche

Il workshop si terrà l'11 dicembre alle 18.00 presso il bar ristorante TuttoBene, di fronte la sede Develer di Campi Bisenzio in via Mugellese 1/A. La registrazione aprirà alle 17.45 per dare la possibilità a tutti di sistemarsi e consentire al relatore di partire alle 18 in punto.
Al termine della prima fase del workshop ci sarà l'apericena e al termine della serata caffè e pasticcini per tutti! I posti sono limitati, registrati subito!

Python のコルーチンライブラリ Greenlet を使ってみる

コルーチン (a.k.a グリーンスレッド、マイクロスレッド、協調スレッド、ファイバ) を使うことで、処理を任意のタイミングで中断・再開できるようになる。 任意のタイミングというのは、つまりカーネルで実装されるネイティブスレッドとは異なり、コンテキストスイッチをプログラマが管理するということ。 これはユーザランドでスタックのコンテキストを保持することで実装されているようだ。 特に、ノンブロッキング I/O と組み合わせて使うことで、マルチスレッドやイベントループを使わずに処理の並列化が実現できるらしい。

まあとりあえず使ってみる。

#! /usr/bin/env python
# -*- coding: utf-8 -*-

from greenlet import greenlet


def test1():
    print(12)  # 1
    gr2.switch()  # 2
    print(34)  # 5


def test2():
    print(56)  # 3
    gr1.switch()  # 4
    print(78)  # コルーチン gr1 がもう一度スイッチしないとこの行は実行されない

gr1 = greenlet(test1)
gr2 = greenlet(test2)
gr1.switch()

実行結果は以下。
12
56
34
処理が 2 つのコルーチンの間を行ったり来たりしているのが分かる。処理はあくまでシングルスレッドで実行されているので print の出力が混ざったりもしない。 コルーチンをスイッチした後には、前回スイッチした箇所から再開されているところもポイント。

まあただ正直これだけだと何が嬉しいのかよく分からない。 どちらかというと Greenlet 自体は直接使うのではなくコルーチン + ノンブロッキング I/O を使ったフレームワークを作るためのパーツとしての意味合いが強いんだと思う。 Greenlet を使ったライブラリとしては Gevent や Eventlet などがあるらしい。
Kawasaki KFX 700 Ride-On In Green

Product Code: B007TGJ374
Rating: 4.5/5 stars
List Price: $ 39.99
Discount: Save $ -1.8
Special Offers: Check It »
Customer Reviews: Read Reviews »

“The condition of the Kawasaki KFX 700 Ride-On In Green you buy and its timely delivery are guaranteed under the Amazon A-to-z Guarantee.”

  • Safe, durable engineering and construction
  • Authentic Kawasaki KFX 700 styling in iconic Kawasaki green color
  • Realistic Kawasaki sound effects
  • Press buttons on the handles to hear sound effects

KFX 700 Ride-On in GreenLet the good times roll’ on the Kawasaki KFX700 ATV Ride On. Moose Mountain has designed this ride on with awesome graphics reflecting the Kawasaki KFX700 styling and attitude. Press the buttons to hear the engine revving, scr [Read more…]

If you have been looking for top recommended best kids ride on toys reviews, this Kawasaki KFX 700 Ride-On In Green is the best cheapest price on the web we have searched. Many good reviews already proving the quality of this product. The Kawasaki KFX 700 Ride-On In Green is equipped with a large number of features that makes it great product. The most sold product is not expensive and it is highly desirable, and if you want this Kawasaki KFX 700 Ride-On In Green, you should not miss this opportunity because this product is the price length applications.

Where To Buy Best Ride On Toys For Kids

Kawasaki KFX 700 Ride-On In Green

Customer rating: 4.5/5 stars


List Price: $ 39.99
Sale: $ 41.79
Discount: Save -5% off your order + Free Shipping
Availability: New, original packaging – In stock
Sold by and Shipping: View details »

Special Offer Today! Price: $ 41.79

( 4:38 AM - Thursday, August 27, 2015 ) »

Most Helpful Customer Reviews

All the lates scooters for kids reviews consumer reports are written by real customers on websites. You should read more consumer reviews and answered questions of Kawasaki KFX 700 Ride-On In Green at Review Centre

Discount Finder: Coupon Codes And Special Offers

Find discount scooters for kids on sale from all sale brands. Get the best discount Kawasaki KFX 700 Ride-On In Green deals from top brands is on sale at Amazon.com. Here you’ll find a variety of discount special offers and coupon codes on popular Amazon products.

Price Comparison Shopping Best Kids Riding Toys Consumer Reports

We have found most affordable price of Kawasaki KFX 700 Ride-On In Green from Amazon.com. It offers fast and free shipping. Kids ride on toys for sale will be limited stock of certain product and discount only for limited time, so do order now to get the best deals. Before you buy, check stock availability and compare price off Kawasaki KFX 700 Ride-On In Green on Top Rated featured products below.



from WordPress http://ift.tt/1UeiSoh
via IFTTT