@ru_python

Страница 1806 из 9768
Aragaer
22.11.2016
08:06:08
увы, если два треда, первый пошел печатать, но в процессе его вытеснили, в твоем решении второй тред будет тупо жрать цпу, ожидая, пока первый все-таки проставит переменную

кондишн включает в себя - семафор, которого можно ждать, очередь ожидания этого семафора, мьютекс, которым защищается доступ к очереди. acquire дает тебе мьютекс. wait отпускает мьютекс и ты ждешь в очереди. На чужом notify просыпаешься и снова пытаешься захватить мьютекс. Выходишь из wait с уже снова захваченным мьютексом

Roman
22.11.2016
08:10:04
Обязательно только 2 треда? :)

Aragaer
22.11.2016
08:10:16
да 8)

Google
Roman
22.11.2016
08:10:46
Можно вообще без локов

Хотя, вру

Очередь с приоритетами

И в качестве приоритета ts

Aragaer
22.11.2016
08:12:00
без локов это вон с двумя переменными и большой загрузкой неработающего треда, если работающий по какой-то посторонней причине тормозит

keystr0ke
22.11.2016
08:12:20
надо сделать два треда. Первый тред пишет ping, второй pong, надо чтобы писали по очереди
from threading import Thread, Lock from time import sleep lock = Lock() counter = 0 def ping(): global counter while True: lock.acquire() if not (counter % 2): counter += 1 print("PING") lock.release() sleep(1) def pong(): global counter while True: lock.acquire() if counter % 2: counter += 1 print("PONG") lock.release() sleep(1) t1 = Thread(target=ping) t2 = Thread(target=pong) t1.start() t2.start() t1.join() t2.join() пойдёт?

Aragaer
22.11.2016
08:12:53
без слипа если?

keystr0ke
22.11.2016
08:13:08
тогда 100% цп

Aragaer
22.11.2016
08:13:27
не, 100% цп можно, если идет печать

нельзя чтобы 1 тред как-то стопорнул скейдлер, а все равно 100%

а тут ровно такое и случится

Subbotin
22.11.2016
08:14:00
замени слип на пинг локалхост

Aragaer
22.11.2016
08:14:08
потому что если первый тред как-то тормозит, то второй будет всегда захватывать лок

Google
Aragaer
22.11.2016
08:14:24
кстати да, в этой ситуации нет гарании, что лок попадет к нужному

только слип и спасает

keystr0ke
22.11.2016
08:14:37
нет

Aragaer
22.11.2016
08:14:43
пинг локалхост это тоже по факту слип

keystr0ke
22.11.2016
08:14:45
спасает counter % 2

Стас Щетинников
22.11.2016
08:14:51
Subbotin
22.11.2016
08:14:59
он на 2.7

Aragaer
22.11.2016
08:15:01
каунтер спасает от того, чтобы не печатать одинаковое

от лока не спасает

первый тред - "завис" второй тред - схватил лок, ничего не напечатал, отпустил, снова схватил, отпустил - и жрет ресурсы

я привел выше решение с кондишном

keystr0ke
22.11.2016
08:16:25
а, ну так коншн решает, да :)

Subbotin
22.11.2016
08:17:19
ты подгоняешь задачу под решение

это гейство

keystr0ke
22.11.2016
08:33:55
недавно собеседовался в яндекс на питон - были похожие задачи
А там какие задачки дают? интересно, жуть) Если не хочешь сюда писать - скинь в личку :)

Subbotin
22.11.2016
08:38:27
да ну собственно есть вроде пара статей на хабре. ну у меня помнится была задачка вида "есть два списка. надо из первого вывести все элементы которых нет во втором." ну и желательно чтоб работало не O(n*m). ну по сути надо пихнуть второй список в сет и проверяться в нем. также попросили потом напилить самые очевидные оптимизации для вырожденых случаев (если любой из массивов нулевой длины то вернуть перый как есть). \\

задачка вида у вас есть поток входящих символов (для простоты строка но надо заложиться под стрим) вида a3b4c5 которую надо разворачивать в aaabbbbccccc (количество символов каждого типа любое). ну тоже за линейную сложность чтоб работало и написать тесты под этого

задачи про алгоритмы плохо помню. что-то на сортировку, катаю статистику и поиск катого символа без сортировки

мержинг отсортированных массивов

вообще как-то было достаточно много заморочек на сложнось алгоритмов

Google
Subbotin
22.11.2016
08:43:33
что понятно при их нагрузках

короче собеседования вроде были не фонтан как сложные. алгоритмы у меня хромают, но в целом тоже норм. у меня были проблемы на собеседовании с техлидом.

уже про всякую административную часть

Subbotin
22.11.2016
08:46:41
ага

ах да. они там на бумажке все пишут. это пиздец. я за последние лет 5 столько не писал от руки сколько на череде собеседований в яндекс

Subbotin
22.11.2016
08:49:32
наоборот

сет(б) же. на проверке нужна логарифмическая скорость и второй масив должен быть в сете. а итерироваться надо по исходному списку чтобы не проебать те значения что были несколько раз

digital
22.11.2016
08:52:03
хай ребята Подскажите как можно в пайчарме селери таску пошагово пройти

Subbotin
22.11.2016
08:52:04
короче мы с яндексом не сошлись. им нужна безсемейная молодежь с горящими глазами чтоб жила на работе

Subbotin
22.11.2016
08:52:36
запусти воркер селери через пичармосквий дебагер

всегда ваш К.О

digital
22.11.2016
08:52:55
сенк

Subbotin
22.11.2016
09:04:39
Нет. Не масштабируется на поток и не обрабатывает корректно строку 34ab45ololo

Johnnie
22.11.2016
09:04:57
Не масштабируется на поток - это как?

про 45 - ага, а 34ab это что?

Google
Subbotin
22.11.2016
09:05:28
Ну представь что у тебя нет строки известной длины.

53r63rn4r
22.11.2016
09:05:49
Предложил для оптимизации и удобства смигрировать с носкл в постгрес Тимлиду @ Пм говорит мне, что он это предложил и лучше сделать так @ Думаю открывать солоэкспедицию на сообственном топливе на Марс

Subbotin
22.11.2016
09:05:54
Ты читаешь по символьной из сокета и пишешь в другой сокет

Roman
22.11.2016
09:06:10
def expand(s): return ''.join([s[i] * int(s[i+1]) for i in range(0, len(s), 2)])
тебе надо посимвольно собирать число.

Johnnie
22.11.2016
09:06:29
тебе надо посимвольно собирать число.
этот косяк я уже понял ага)

Subbotin
22.11.2016
09:07:27
Цифра в начале значит пустая строка столько раз

Admin
ERROR: S client not available

53r63rn4r
22.11.2016
09:13:53
Щас объясню

Ну типа я предложил как лучше и быстрее а мне пм говорит что это предложил тот чувак которому я предложил нет, просто он до этого даже не додумался, скааааааааа это когда типа чуваки все едят сосиской макароны, потому что повар вместо вилок дал им сосиски ты говоришь что классно было бы использовать вилки а директор говорит да повар предложил вместо сосисок использовать вилки будем воплощать его идею

keystr0ke
22.11.2016
09:16:03
Цифра в начале значит пустая строка столько раз
можно поточнее, что будет, если я подам только числа? что будет если подам только буквы? что будет если подам такое test4?

Subbotin
22.11.2016
09:19:55
если только цифры то ничего не будет. только буквы - если до конца строки и потока не будет больше цифр то точтоно подал однократно (по-дефолту считаем что число = 1. это я тоже уточнял ибо не очевидно. мог быть и 0). test4 превратится в testtesttesttest

Subbotin
22.11.2016
09:20:49
опять не верно. случай a22 обработается не корректно

да и ab2 вроде тоже

Roman
22.11.2016
09:24:12
Подскажите плиз. Юзаю peewee, postgresql. Есть папка с моделями. скрипты типа from peewee import * class Users(Model): username = CharField(40, unique=True, index=True) password = CharField(40) Далее есть скрипт db_create from peewee import * from app.models.users import Users from app.models.turn_type import TurnType from app.models.soft import Soft from app.models.prefix import Prefix from app.models.statistics import Statistics psql = PostgresqlDatabase('') Тут имя БД psql.connect() class Meta: database = psql psql.create_table(Users) psql.create_table(TurnType) psql.create_table(Soft) psql.create_table(Prefix) psql.create_table(Statistics) psql.close() Который создает бд

потом есть скрипт, который должен добавить пользователя from peewee import * from app.models.users import Users pdb = PostgresqlDatabase('GPRDB') class Meta: database = pdb test = Users.create(username='test1', password='123456')

но выдается ошибка peewee.OperationalError: no such table: users

таблицу удалял и создавал заново скриптом

Таблица в бд присутствует

Google
b0g3r
22.11.2016
09:28:28
class Meta в скрипте) вау)

Он должен быть в классе модели

Еще раз загляни в пример, который ты используешь

keystr0ke
22.11.2016
09:35:39
да и ab2 вроде тоже
Language: python2 Source: s = "abc3ah0w2" tmp = "" result = "" for i in s: if i.isdigit(): result += tmp * int(i) tmp = "" else: tmp += i result += tmp print(result) Result: abcabcabcww Stats: Absolute running time: 0.14 sec, cpu time: 0.01 sec, memory peak: 4 Mb, absolute service time: 0,14 sec

Subbotin
22.11.2016
09:38:25
наоборот аб2 работает как надо а a22 не работает

Johnnie
22.11.2016
09:38:29
def expand(s): result = '' i = 0 while i < len(s): current = '' repeats = '' while i < len(s) and s[i].isalpha(): current += s[i] i += 1 while i < len(s) and s[i].isnumeric(): repeats += s[i] i += 1 if not repeats: repeats = '1' result += current * int(repeats) return result

такие костыли получились

можно объединить наверное два while

keystr0ke
22.11.2016
09:39:11
Subbotin
22.11.2016
09:39:28
должно быть 'a'*22

keystr0ke
22.11.2016
09:39:45
ааа

понял)

Subbotin
22.11.2016
09:40:32
ну вот у вокера вроде корректно работает. но только на строке. на работу с сокетом придётся все переписать

Johnnie
22.11.2016
09:40:46
я прост хз как работают сокеты если честно

Aragaer
22.11.2016
09:40:50
ща-ща, я не понял, в чем задача?

Страница 1806 из 9768