Skip to content

Instantly share code, notes, and snippets.

@xiazhibin
xiazhibin / ioloop.py
Created April 1, 2018 08:13
IO复用回调版本
import selectors
import errno
import sys
class IOLoop(object):
@classmethod
@xiazhibin
xiazhibin / 同步阻塞.py
Created March 30, 2018 07:17
五种IO模型
import socket
import time
tic = lambda x: '\nat %1.1f second' % (time.time() - x)
def get_request(path):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('127.0.0.1', 8088))
sock.setblocking(0)
@xiazhibin
xiazhibin / ioloop.py
Created March 29, 2018 13:46
simple tcpserver
import selectors
import errno
import sys
class IOLoop(object):
@classmethod
@xiazhibin
xiazhibin / run_task0.py
Last active March 17, 2018 08:31
定时任务执行
import bisect
import heapq
import time
from collections import namedtuple
timeouts = namedtuple('Timeouts', ['deadline', 'task'])
class Task(object):
def __init__(self, schedule, name):
def ngetmprint(list, ans, m):
if m == len(list):
ans = ans + list
print ans
elif m == 0:
print ans
else:
ngetmprint(list[1:], ans + list[0:1], m - 1)
ngetmprint(list[1:], ans, m)
@xiazhibin
xiazhibin / full_permutation.py
Created March 4, 2018 11:12
full_permutation
def full_permutation(arr, cursor):
if cursor == len(arr) - 1:
print arr
return
for i in range(cursor, len(arr)):
arr[cursor], arr[i] = arr[i], arr[cursor]
full_permutation(arr, cursor + 1)
arr[cursor], arr[i] = arr[i], arr[cursor]
@xiazhibin
xiazhibin / demo.py
Created February 23, 2018 12:34
解构URL
from urllib import urlencode
from urlparse import urlparse, urlunparse, parse_qsl
url = 'https://www.baidu.com?fuxk=true&m=1'
url_parts = list(urlparse(url))
query = dict(parse_qsl(url_parts[4]))
query.update({'nimabi': 1111})
url_parts[4] = urlencode(query)
print urlunparse(url_parts)
@xiazhibin
xiazhibin / secure_filename.py
Last active February 8, 2018 09:57
secure_filename with chinese
_filename_gbk_strip_re = re.compile(u"^[\u4e00-\u9fa5A-Za-z0-9_.-]+$")
def secure_filename(filename):
if isinstance(filename, text_type):
from unicodedata import normalize
filename = normalize('NFKD', filename).encode('utf-8', 'ignore')
if not PY2:
filename = filename.decode('utf-8')
for sep in os.path.sep, os.path.altsep:
@xiazhibin
xiazhibin / pre_fork.py
Last active January 19, 2018 08:17
pre-fork model
# coding=utf-8
import os, logging
import random
import signal
import time
import sys
@xiazhibin
xiazhibin / print_signal.py
Created January 19, 2018 03:44
list all signal
import signal
def handle_hup(sig, frame):
print "get signal: %s"%sig
signal.signal(signal.SIGHUP, handle_hup)
if __name__ == '__main__':
ign = signal.SIG_IGN