def gnome(out_q, treasure): logger = get_logger('queue', 'queue_proc.log') while True: for i in range(randint(1, 10)): data = choice(treasure) out_q.put(data) logger.info('Gnome was working. Now rest...') time.sleep(.1)
def gnome(out_q, treasures): logger = get_logger('queue_proc', 'queue_proc.log') while True: # Гном-производитель откапывает случайное сокровище for i in range(randint(1,10)): data = choice(treasures) out_q.put(data) logger.info('Гном. Немного поработал, немного отдохну...') time.sleep(0.1)
def gnome_king(in_q): gnomes_cave = [] logger = get_logger('queue', 'queue_proc.log') while True: data = in_q.get() if data is None: logger.info('King: i have to exit') logger.info('Queue: {}'.format(in_q.qsize())) break logger.info('The King: gnome bring me {}'.format(data)) gnomes_cave.append(data) logger.info('King: gnome bring me {}'.format(Counter(gnomes_cave))) return gnomes_cave
def gnome_king(in_q): logger = get_logger('queue_proc', 'queue_proc.log') gnomes_cave = [] while True: # Получаем данные из очереди data = in_q.get() if data is None: logger.info('Король. Упс, меня попросили выйти'.format(data)) break logger.info('Король. Гном принёс мне {}'.format(data)) # Кладём сокровища в... сберкассу gnomes_cave.append(data) return gnomes_cave
from os import path import asyncio import datetime import hashlib import traceback from aiohttp import web import aiohttp_jinja2 from aiohttp_auth import auth from hvd_calendar import get_workdays_delta import months import app_log import pymongo import settings as S log = app_log.get_logger() CRITICAL_TIMEDELTA = datetime.timedelta(hours=12) AVAILIBLE_UNTIL_TIMEDELTA = { 'first': datetime.timedelta(hours=9, minutes=20), 'second': datetime.timedelta(hours=14), 'third': datetime.timedelta(hours=12), } async def process_response(self, request, response): """Called to perform any processing of the response required. This function stores any cookie data in the COOKIE_AUTH_KEY as a cookie in the response object. If the value is a empty string, the associated cookie is deleted instead.
# coding=utf-8 from db import db from misc import string_to_date, unisafe from datetime import datetime, date, timedelta from app import app from app_log import get_logger log = get_logger(__name__) class Vacation(db.Model): types = { "vacation": 0, "sick_leave": 1, "child_birth": 2, "training": 3, "other": 99, } readable_types = { 0: u"", 1: u"baixa", 2: u"parto", 3: u"formação", 99: u"outro", } id = db.Column(db.Integer, primary_key=True) type = db.Column(db.Integer) date = db.Column(db.Date)
import time from collections import Counter from queue import Queue from random import choice, randint from threading import Thread from app_log import get_logger gnomes_cave = [] treasure = ('Gold', 'Silver', 'Diamonds', 'Ruby') logger = get_logger('queue_thread', 'queue.log') def gnome(out_q): while True: for i in range(randint(1, 10)): data = choice(treasure) out_q.put(data) logger.info('Gnome was working. Now rest...') time.sleep(.1) def gnome_king(in_q): while True: data = in_q.get() logger.info('The King: gnome bring me {}'.format(data)) gnomes_cave.append(data) q = Queue() t1 = Thread(target=gnome_king, args=(q, ), daemon=True)
# ----------------- Пример работы с очередью в потоках ------------------------ # Модуль queue реализует различные типы очередей, # поддерживающих возможность доступа из множества потоков # и обеспечивающих сохранность информации при обмене данными между разными потоками import time from random import choice, randint from collections import Counter from threading import Thread from queue import Queue from app_log import get_logger logger = get_logger('queue', 'queue.log') treasure = ('золото', 'серебро', 'алмазы', 'рубины') gnomes_cave = [] # Гном-производитель def gnome(out_q): while True: # Гном-производитель откапывает случайное сокровище for i in range(randint(1, 10)): data = choice(treasure) # .put(item) добавляет элемент item в очередь out_q.put(data) logger.info('Гном. Немного поработал, немного отдохну...') time.sleep(0.1)
# coding=utf-8 from db import db from misc import string_to_date, unisafe from datetime import datetime,date,timedelta from app import app from app_log import get_logger log= get_logger(__name__) class Vacation(db.Model): types= { "vacation": 0, "sick_leave": 1, "child_birth": 2, "training": 3, "other": 99, } readable_types= { 0:u"", 1:u"baixa", 2:u"parto", 3:u"formação", 99:u"outro", } id = db.Column(db.Integer, primary_key=True) type = db.Column(db.Integer) date= db.Column(db.Date) username = db.Column(db.String(30), db.ForeignKey('user.username')) user = db.relationship('User', backref=db.backref('vacations', lazy='dynamic'))
import time from random import randint from collections import deque from threading import Thread, Condition from app_log import get_logger logger = get_logger('condition','condition.log') q = deque() # Переменная состояния (condition variable) – это механизм синхронизации, # надстроенный на уже имеющейся блокировке, который используется потоками, # когда требуется дождаться наступления определенного состояния или появления события. # Переменные состояния обычно используются в схемах поставщик-потребитель, # когда один поток производит данные, а другой обрабатывает их. flag = Condition() # Решим схему "Производитель-Потребитель" через использование Condition def producer(): i = 0 while True: flag.acquire() while len(q) < 100: logger.info('Мороженщик. Мороженого мало ({}). Произвожу!'.format(len(q))) q.append('Мороженое-{}'.format(i)) i += 1