
Matwey
05.02.2018
11:49:31
Господа
У меня вопрос по C/API
и GIL
Я к примеру вызываю функцию PyBytes_FromStringAndSize, может ли внутри неё произойти освобождение GIL, и переключение на другой поток, с последующим возвращением?

Google

V
05.02.2018
21:18:03
Не паникуйте, усех забаним)

Марк
06.02.2018
06:54:37

Matwey
06.02.2018
06:59:53

Марк
06.02.2018
07:01:08
Насколько я помню, атомарность не сломается, но работа функции может быть остановлена в её середине, например
И без проблем работа функции будет завершена, когда поток с ней вернётся в работу
Но можно использовать Lock, например, чтобы в начале функции явно его взять, и в конце ф-ии Releasнуть, если требуется, чтобы функция довела свою работу в любом случае до конца
Вообще с многопоточностью в Python есть явные проблемы, созданные by-design, ибо GIL позволяет исполняться только одному потоку одновременно. Частично можно их решить с помощью asyncio, или использовать multiproccessing, но там свои сложности

Oleg
06.02.2018
08:23:50
А с asyncio что за сложности?

Andrey
06.02.2018
09:50:54
У меня с asyncio вообще никаких сложностей, во многих задачах предпочитаю этот модуль использовать вместо multiprocessing. Особенно если выбор стоит между бесконечно крутить таски в корутинах или в отдельных процессах, особенно если они должны сами восстанавливаться в случае непредвиденных ситуаций. У multiprocessing путаница получается с общением между дочерними и родительским, если один из дочерних должен перезапускать другие в случае их завершения (появляются зомби т.д.) а вот с asyncio таких проблем нет.

Марк
06.02.2018
09:58:54
Сложности именно с multiprocesssing, c asyncio всё весьма хорошо, как заметил комментатор выше, просто я в своем последнем сообщении не совсем корректно сформулировал предложение.

Oleg
06.02.2018
10:32:59
Так asyncio на одном CPU

Andrey
06.02.2018
11:58:44
Никто не мешает их мешать, но я бы не советовал этого делать) опять же возможен зомбипрок)

Matwey
06.02.2018
12:15:57

Google

antonsaliy
08.02.2018
22:29:06
привет, кто-то использовал питоновскую api wrapper для биржи binance?
есть один вопрос по этой теме, очень хотелось бы его решить
отпишите кто шарит, пожалуйста??

Валерий
09.02.2018
09:53:22
Всем привет. Кто работал с PyQt5, подскажите почему при выполнении кода пишет: ImportError: cannot import name 'QWidget' ImportError: cannot import name 'QApplication' ???
импортировал вот так: from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QPainterPath
from PyQt5.QtCore import Qt
import sys
и пишет такое во всех примерах в инета, с книг

BlackAndOrange
09.02.2018
21:00:58
А у тебя Qt-то установлен?
Покажи вообще полный лог

Валерий
09.02.2018
21:02:41
вот видишь, что в PyQt5.QtWidgets вообще ничего нет
видно не доставился пайкьют
иначе бы ты увидел там твои модули
Выдает одну и ту же ошибку и при установленом кьюти, и при не установленом
Пробовал всячески переустанавливать – не помогло

BlackAndOrange
09.02.2018
21:11:31
print(PyQt5.QtWidgets)
Идёшь в нужную директорию
Открываешь файл QtWidgets.py