Привет, я столкнулся с такой же проблемой, поэтому, основываясь на ответе @ chidan, я создал две демонстрации для pushy и уведомлений JPush.
Надежный и легко реализуются по сравнению с другими с точки зрения документации. Нет необходимости в сообществе и поддержке, поскольку эта работа прекрасна в моей первой попытке и дает желаемые результаты.
Существует небольшая цена, если вы используете https://pushy.me/
sample: pushy imeplemetaion blog link
У JPush хорошая поддержка сообщества, однако документация немного разбросана. JPush можно использовать бесплатно. Единственная проблема с использованием JPush - это то, что ресурсы разбросаны по битам.
В Python потоки довольно сложны и работают в одной и той же куче памяти. Потоки в основном работают одновременно, то есть несколько потоков чередуются вместе, так что только при запуске выполняется одновременно, и они вместе работают альтернативно в очень короткие промежутки времени (учитывая, что им нужен доступ к интерпретатору).
Когда вы переводите поток в спящий режим, он в основном использует базовые функции спящего режима системы и блокирует все операции над ним. Тем не менее, другие потоки, безусловно, работоспособны. Таким образом, когда вы говорите, что THREAD1 находится в спящем режиме до того, как он собирался получить доступ к глобальной переменной, очевидно, что другие потоки будут использовать переменную, потому что они работают, а THREAD1 - нет.
Как только THREAD1 пробуждается, при необходимости он получает GIL и, таким образом, получает доступ к глобальной переменной. Так как он снова чередуется с другими потоками, из-за параллелизма он получает немедленный доступ к глобальной переменной после активации. Если бы другие потоки использовали его, они бы отказались от доступа до того, как THREAD1 начал операции.