Skip to content

Instantly share code, notes, and snippets.

View bpgergo's full-sized avatar

Peter Gergő Barna bpgergo

View GitHub Profile
@bpgergo
bpgergo / matrix.py
Created November 28, 2011 11:54
Concurrent matrix multiplication
import random
import multiprocessing
from itertools import starmap, izip, repeat, imap
from operator import mul
def calc_row_of_product_matrix(a_row, b, izip=izip):
'''Calculate a row of the product matrix P = A * B
Arguments:
a_row is af A
b is the B matrix
@bpgergo
bpgergo / mult.py
Created August 29, 2011 23:16
Matrix multiplication
import operator
a = [[1, 2, 3], [4, 5, 6]]
b = [[1, 2], [3, 4], [5, 6]]
def sumprod(row, col):
return sum(reduce(operator.mul, data) for data in zip(row, col))
r = map(lambda row: map(lambda col: sumprod(row, col), zip(*b)), a)
@bpgergo
bpgergo / gist:1039777
Created June 22, 2011 09:43
Ngrams with coroutines 3
counts = [[10 for i in xrange(k)] for i in xrange(k)]
bigrams = filter_chars(accepted_chars, ngrams(2, counter(counts)))
for c in open('big.txt').read().decode(enc): bigrams.send(c)
@bpgergo
bpgergo / gist:1039774
Created June 22, 2011 09:42
Ngrams with coroutines 2
@coroutine
def filter_chars(accepted_chars,target):
""" A coroutine to filter out unaccepted chars.
Accepts one char at a time """
while True:
c = (yield)
if c.lower() in accepted_chars:
target.send(c.lower())
@coroutine
@bpgergo
bpgergo / gist:1039770
Created June 22, 2011 09:40
Ngrams with coroutines
def coroutine(func):
""" A decorator function that takes care
of starting a coroutine automatically on call """
def start(*args,**kwargs):
coro = func(*args,**kwargs)
coro.next()
return coro
return start
@coroutine