Nano Hash - криптовалюты, майнинг, программирование

Контекстный диспетчер потокобезопасен

Я надеюсь, что с этим кодом он должен сразу же напечатать «вход», затем спать, а затем напечатать «выход». Но все это делается за один раз. Как мне заставить его работать? И прямо сейчас он блокирует основное приложение, поэтому в идеале я хочу запустить вызываемую функцию в отдельном потоке. Но тогда "вход" и "выход" печатаются сразу, а после таймера сна вызов функции.

import time

def test_run():
   time.sleep(1)


class Update(object):
   def __init__(self):
       pass
   def __enter__(self):
       print 'enter'
   def __exit__(self, *_):
       print 'exit'

with Update():
   test_run()

  • Не вижу проблем с кодом. Я протестировал его и увеличил таймер, добавил несколько операторов печати, и он вел себя так, как ожидалось. 23.10.2015

Ответы:


1

Ваш код работает для меня.

import time
import threading

def test_run():    
    time.sleep(5)

def run_update():
    with Update():
        test_run()

class Update(object):
    def __init__(self):
        pass
    def __enter__(self):
        print('enter')
    def __exit__(self, *_):
        print('exit')

if __name__ == "__main__":
    th = threading.Thread(target=run_update)
    th.start()
    for i in range(100):
        print(i)

Если вы увеличите время сна, это может быть более заметно.

23.10.2015
  • Кажется, это работает только тогда, когда контекст with Update() находится в функции. Спасибо за это! Теперь у меня есть более продвинутая вещь, QT не является потокобезопасным, или просто иногда.. 23.10.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..