@python_beginnersЭта группа больше не существует

Страница 370 из 1885
Omni
28.08.2016
11:30:49
Брейки надо будет и в тредах поставить тоже, поскольку дебаггер не может его читать, пока он запущен

V
28.08.2016
11:31:12
ага, у меня окошко frames было спрятано, оказывается! так, уже лучше, что-то видно

Omni
28.08.2016
11:32:09
from threading import Thread from time import sleep def foo(): sleep(5) print("hello") sleep(5) a=Thread(target=foo) a.start() a.join() Тестовый код, на поиграться

V
28.08.2016
11:32:10
во-во, это у меня сейчас и видно

Google
dexofan
28.08.2016
11:32:53
Поясните за потоки. Как мне делать post запрос к сайту в разных потоках?

Omni
28.08.2016
11:32:59
я поставил брейк на print("hello"), он постоял с этой надписью, а потом всё показал

V
28.08.2016
11:33:29
а слип там обязательно?

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

Omni
28.08.2016
11:36:35
Поясните за потоки. Как мне делать post запрос к сайту в разных потоках?
Ну хотя бы вот так from threading import Thread import requests def t_request(): r = requests.get("http://www.google.com") print(r.content) l = [] for i in range(4): a=Thread(target=t_request) l.append(a) a.start() for i in l: i.join() Если быстро и топорно

dexofan
28.08.2016
11:37:29
А если при этом нужно писать в файл?

Omni
28.08.2016
11:39:15
А если при этом нужно писать в файл?
Тогда либо из тредов организовываешь доступ в файл и пишешь из них (прописав Lock, конечно), или собираешь через Queue данные и потом пишешь их в файл из основного потока

from threading import Thread, Lock from time import sleep import requests lock = Lock() def t_request(): r = requests.get("http://www.google.com") with lock: with open("bar.txt", 'a') as f: f.write(r.content.decode()) f.write("#"*100) l = [] for i in range(4): a=Thread(target=t_request) l.append(a) a.start() for i in l: i.join() Первый вариант, условно

from threading import Thread, Lock from queue import Queue from time import sleep import requests q = Queue() def t_request(): r = requests.get("http://www.google.com") q.put(r.content.decode()) l = [] for i in range(4): a=Thread(target=t_request) l.append(a) a.start() for i in l: i.join() with open("bar.txt", 'a') as f: while not q.empty(): f.write(q.get()) И второй

Написано на коленке, поэтому советую поиграться самому

V
28.08.2016
11:49:50
о, вроде получилось. а тупой вопрос, когда дебагер останавливает основной поток, дочерние потоки тоже останавливаются или продолжают молотить, если в них брейков нет?

Google
Omni
28.08.2016
11:50:54
Продолжают работать. Потому и возникает эта красная надпись
Из работающей проги нельзя прочитать переменные

V
28.08.2016
11:52:15
ах ты ж будь они неладны потоки эти! (подозреваю, это говорит любой начинающий программист)

Omni
28.08.2016
11:52:22
"Фреймы недоступны в неприостановленном потоке"

Но к этому просто надо привыкнуть хорошенько)

V
28.08.2016
11:54:28
ну у меня в свое время так с регулярками было. сначала это казалось какой-то невообразимой хренью, недоступной моему мозгу. а потом что щелкнуло и теперь понять не могу, что там такого непонятного было, все ж просто. надеюсь, с потоками тоже обвыкнусь

бггг, картинка ок

V
28.08.2016
11:55:19
ну это как велосипед, один раз научился - потом поедешь по-любому

Omni
28.08.2016
11:55:46
Ещё подстава бывает, когда какая-то библиотека, которую ты импортировал, использует многопоточность под капотом. А потом начинается: "Какого хрена прога не завершается по Ctrl+C?!"

V
28.08.2016
11:57:50
я просто первый раз столкнулся сейчас с потоками и очередью одновременно. почитал доки, вроде все предельно понятно. но на практике поток почему-то зависает в ряде случаев и не пойму почему. такое ощущение, что очередь ждет добавки, а добавлять уже нечего. но отловить, когда это происходит не могу :(

Omni
28.08.2016
11:58:30
fun fact: в виндовых консольных приложениях, нажатие ^C порождает новый поток
Я уж забыл, как там завершение работы проги делается?

Zart
28.08.2016
11:58:48
э...

так же?

Omni
28.08.2016
11:59:18
А откуда тогда новый поток?

Zart
28.08.2016
12:00:32
от ОС

V
28.08.2016
12:00:46
подозреваю, он появляется, чтобы сообщить всем присутствующим, кому пора завершиться?

Google
V
28.08.2016
12:01:03
(просто предположение)

Zart
28.08.2016
12:01:04
не совсем, это я просто про детали реализации

V
28.08.2016
12:01:51
...избави нас от винды и не введи во искушение...

Zart
28.08.2016
12:02:10
...и да пройдут долбоёбы красноглазые нахуй аминь

Zart
28.08.2016
12:02:41
как же меня заебали люди, ругающие винду, но не осилившие ни её, ни линукса

V
28.08.2016
12:02:52
не сочтите за развязывание холивара, к слову пришлось

все операционки прекрасны, каждая по своему. в умелых руках

Omni
28.08.2016
12:03:47
как же меня заебали люди, ругающие винду, но не осилившие ни её, ни линукса
Это же группа Python_beginners. Здесь не быть осилившим можно

V
28.08.2016
12:04:33
в соседнем чатике полночи какашками бросались, не начинайте, парни, я просто так ляпнул))

V
28.08.2016
12:05:09
лишь бы всем платили хорошо, ос значения не имеет

Omni
28.08.2016
12:05:47
лишь бы всем платили хорошо, ос значения не имеет
Какая подходит и какая нравится - на той и работай

V
28.08.2016
12:06:34
я вообще на мак пересел - это стыдно?))

Zart
28.08.2016
12:06:59
метросексуал, йоба

Omni
28.08.2016
12:07:27
я вообще на мак пересел - это стыдно?))
Сам на нём не сидел, но система как система, почему бы и нет.

Google
Omni
28.08.2016
12:07:48
Я всегда думал, что все художники пересели на мак. Но когда началось "Почему у меня SAI не встаёт на него?!", я понял, что это не 100% лучшая затея.

Zart
28.08.2016
12:10:46
"почему мой кряк не работает на фотошоп?"

Omni
28.08.2016
12:11:19
"почему мой кряк не работает на фотошоп?"
У тех, которые это кричали, лицухи)

Zart
28.08.2016
12:13:29
не порти анекдот

V
28.08.2016
12:34:35
хм, открыл для себя threading graph в pycharm и вижу, что застревает у меня не дочерний, а основной поток. и дело похоже, реально, в очереди. q.join() я так понимаю лочит поток и не отпускает его, хотя на каждый .put() вроде как был сделан task_done(). есть какие-то популярные грабли для новичков?

Admin
ERROR: S client not available

Zart
28.08.2016
12:36:11
join ставит текущий поток на паузу и просит ОС продолжить его лишь когда наступит условие

V
28.08.2016
12:44:06
ну я так понимаю условием является пустая очередь?

омг, все заработало. и я под пытками никому не признаюсь в чем было дело. too embarrassing

и большое спасибо за помощь, на тупой ошибке узнал что-то новое про ide

Janek
28.08.2016
13:04:42
Иногда застрянешь на три часа на ошибке. Все пробуешь

Ставишь через каждую строку принты, чтоб отслеживать состояния переменных

А оказывается, что просто опечатался в реторне

Пару раз застревал так

V
28.08.2016
13:13:07
ну вот из этой же оперы проблема была )) пока экспериментировал в воркере цикл сделал не бесконечным и забыл. вот он и не мог очередь очистить

Janek
28.08.2016
15:58:53
Кто из вас без специального образования работает уже?

Zloy geniy
28.08.2016
16:00:14
есть вообще люди которые програмируют не ради работы????

а то я смотрю все работяги ...)

Google
Petr
28.08.2016
16:00:22
дык

Zloy geniy
28.08.2016
16:00:34
например взламывать там уметь

изначально цель такая была

а не типо буду зарабатывать много

?

Petr
28.08.2016
16:01:49
щто

Janek
28.08.2016
16:03:24
Я просто фан ловлю

Зарабатываю на нынешней работе не меньше джунов

Zloy geniy
28.08.2016
16:04:08
)))

вот вот

⬗VLAD⌶K⬖
28.08.2016
16:04:11
например взламывать там уметь
пентестеры тоже ломают, однако тоже на зарплате

Janek
28.08.2016
16:04:16
Но хотелось бы кодить начать

В смысле работать кодером

Zloy geniy
28.08.2016
16:04:49
это жестко слишком ))

Janek
28.08.2016
16:05:01
Что?

Zloy geniy
28.08.2016
16:05:13
работать на папика

Pavel
28.08.2016
16:18:35
есть вообще люди которые програмируют не ради работы????
мне на основной работе не заплатили ни за одну строчку кода

Zloy geniy
28.08.2016
16:18:52
круто)

Страница 370 из 1885

Эта группа больше не существует Эта группа больше не существует