def quickreduce(func,lst,start=None,slavs=None): if slavs is None: s = slaves.slaves(prod) s.start() s.pause() else: s = slavs if start is None: old = [] else: old = [start,] old.extend(lst) arr = [old,[],] p = 0 ln = len(arr[p]) while ln>1: prev = arr[p] p = 1 - p arr[p] = [] next = arr[p] cnt = 0 for i in range(0,ln/2): s.put((prev[2*i],prev[2*i+1],)) cnt = cnt + 1 if ln%2==1: next.append(prev[-1]) s.resume() for i in range(0,cnt): next.append(s.get()) s.pause() ln = len(next) s.terminate() return arr[p][0]
def fact_double(n): mid = n/2 s = slaves.slaves(fact_part) s.put((1,mid)) s.put((mid+1,n)) s.start() rez = s.get()*s.get() s.terminate() return rez
def fact_double_perf(n, max_blocks=15,min_size=500, spec_reduce=reduce): s = slaves.slaves(fact_part) dist = n/max_blocks if dist < min_size: dist = min_size st = 1 fin = st + dist - 1 count = 1 while fin<n: s.put((st,fin,)) count = count + 1 st = fin + 1 fin = st + dist -1 s.start() s.put((st,n)) lst = [] for i in range(0,count): lst.append(s.get()) s.terminate() return spec_reduce(lambda x,y:x*y,lst,1)
import RPi.GPIO as GPIO import MFRC522 import signal import lcddriver import json import random import pymysql import os import time import signal stamp = dict() realstamp = dict() mqttdevices = dict() tordevices = torturedevices() slaves = slaves() rfdevice = RFDevice( 27 ) rfsend = RFDevice( 17 ) rfdevice.enable_rx() rfsend.enable_tx() rfdevice.tx_repeat = 10 timestamp = None old_slave_count = -1 old_device_count = -1 logger = logging.getLogger( 'Punisher' ) logger.setLevel( logging.DEBUG ) log = logging.FileHandler('logs/punisher.log') log.setLevel( logging.DEBUG ) logger.addHandler( log ) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') log.setFormatter( formatter )