Skip to content

Instantly share code, notes, and snippets.

View mayflaver's full-sized avatar

Fucong Wang mayflaver

  • Chengdu, China
View GitHub Profile
@mayflaver
mayflaver / coroutine.py
Created July 28, 2014 06:25
为什么这种性能这么低?
@gen.coroutine
def fetch_json(url):
response = yield AsyncHTTPClient().fetch(url)
raise gen.Return(json_decode(response.body))
@mayflaver
mayflaver / demo.py
Created July 1, 2014 07:06
__getattr__ vs property
class test(dict):
def __init__(self):
self['data'] = {}
def __setattr__(self, name, value):
self['data'][name] = value
def __getattr__(self, name):
try:
return self['data'][name]
import itertools
def test(data_iter, header_size):
h1 = itertools.islice(data_iter, header_size)
h2 = iter(data_iter)
return itertools.chain(h1, h2)
@mayflaver
mayflaver / async.c
Created March 13, 2014 04:16
libuv async demo
#include <uv.h>
#include <stdio.h>
#include <unistd.h>
uv_loop_t *loop;
uv_async_t async;
void print_progress(uv_async_t *handle, int status /*UNUSED*/) {
printf("%s\n", (char *)handle->data);
}
@mayflaver
mayflaver / main.py
Created January 15, 2014 09:08
tornado periodic
from functools import wraps, partial
from period import PeriodicCallback
from tornado.concurrent import run_on_executor, TracebackFuture, DummyExecutor
import tornado.ioloop
import tornado.web
from tornado.gen import coroutine
class PeriodicExecutor(object):
@mayflaver
mayflaver / merge.py
Created December 25, 2013 13:55
merge multi generator
import heapq
def merge(*args):
h = []
for g in args:
try:
a = g.next()
except StopIteration:
continue
heapq.heappush(h, (a, g))
import tornado.ioloop
from tornado.ioloop import IOLoop
import tornado.web
import tornado.gen
import tornado.httpclient
from resolver import CaresResolver
import time
from functools import partial
from period import PeriodicCallback
@mayflaver
mayflaver / gist:7884973
Created December 10, 2013 02:42
tornado coroutine return
import tornado.ioloop
import tornado.web
import tornado.gen
import tornado.httpclient
from tornado.platform.caresresolver import CaresResolver
import time
@tornado.gen.coroutine
def test():
client = tornado.httpclient.AsyncHTTPClient()
@mayflaver
mayflaver / gist:6351134
Created August 27, 2013 08:38
tornado event/driven demo
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
def test1():
print 'test1'
def test2():
print 'test2'
tornado.ioloop.IOLoop.instance().add_listener('test', test1)
@mayflaver
mayflaver / gist:6221699
Created August 13, 2013 14:34
tornado-celery demo
import tornado.ioloop
import tornado.web
import tasks
class AppHandler(tornado.web.RequestHandler):
def get(self):
self.write("test app")
class MainHandler(tornado.web.RequestHandler):