Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Как использовать timer threads в Python для многозадачности?

  1. Как использовать timer threads в Python для многозадачности?

    Привет, народ! Столкнулся с проблемой, когда нужно запустить таймер в мультипоточном приложении на Python. В общем код тормозит и багует. Может кто знает, как организовать использование timer threads в Python и при этом избежать подвисаний? Буду признателен за любые примеры и советы!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Привет! В Python для работы с таймерами и многопоточностью можно использовать модуль threading и класс Timer. Вот небольшой пример, как это делается:

    Программный код:
      import threading
      
      def timer_task
    ():
          print(
    'Timer is running')
      
      
    timer threading.Timer(3timer_task)
      
    timer.start()
      
      print(
    'Waiting for timer...'
    Здесь таймер запустит функцию timer_task через 3 секунды. Так можно выполнять задачи в отдельных потоках.

  4. Цитата Сообщение от JuliaSun
    Привет! В Python для работы с таймерами и многопоточностью можно использовать модуль threading и класс Timer. Вот небольшой пример, как это делается:

    Программный код:
      import threading
      
      def timer_task
    ():
          print(
    'Timer is running')
      
      
    timer threading.Timer(3timer_task)
      
    timer.start()
      
      print(
    'Waiting for timer...'
    Здесь таймер запустит функцию timer_task через 3 секунды. Так можно выполнять задачи в отдельных потоках.
    О, классный пример! Вроде всё просто, но почему-то у меня бывает таймер просто не запускается. Можешь подсказать, в чём может быть проблема?

  5. Ещё один вариант - использовать библиотеку concurrent.futures. Она позволяет проще работать с потоками. Вот как это можно сделать:

    Программный код:
      from concurrent.futures import ThreadPoolExecutor
      import time
      
      def timer_task
    ():
          print(
    'Timer with ThreadPoolExecutor')
      
      
    executor ThreadPoolExecutor(max_workers=2)
      
    executor.submit(lambdatime.sleep(3) and timer_task())
      print(
    'Waiting with ThreadPoolExecutor...'
    Этот способ чуть проще и позволяет лучше контролировать количество потоков.

  6. Цитата Сообщение от OlegWarrior
    Ещё один вариант - использовать библиотеку concurrent.futures. Она позволяет проще работать с потоками. Вот как это можно сделать:

    Программный код:
      from concurrent.futures import ThreadPoolExecutor
      import time
      
      def timer_task
    ():
          print(
    'Timer with ThreadPoolExecutor')
      
      
    executor ThreadPoolExecutor(max_workers=2)
      
    executor.submit(lambdatime.sleep(3) and timer_task())
      print(
    'Waiting with ThreadPoolExecutor...'
    Этот способ чуть проще и позволяет лучше контролировать количество потоков.
    Хорошо бы сравнить оба способа по производительности. Кто-нибудь делал такие тесты?

  7. Да, сталкивался с такой задачей. Timer можно зашить в отдельный поток и так контролировать выполнение. Например:

    Программный код:
      import threadingtime
      
      
    class MyThread(threading.Thread):
          
    def run(self):
      print(
    'Starting timer thread')
      
    time.sleep(3)
      print(
    'Timer is complete')
      
      
    MyThread()
      
    t.start()
      print(
    'Thread has started.'
    Это может помочь улучшить организацию кода.

  8. Цитата Сообщение от Валентина
    Да, сталкивался с такой задачей. Timer можно зашить в отдельный поток и так контролировать выполнение. Например:

    Программный код:
      import threadingtime
      
      
    class MyThread(threading.Thread):
          
    def run(self):
      print(
    'Starting timer thread')
      
    time.sleep(3)
      print(
    'Timer is complete')
      
      
    MyThread()
      
    t.start()
      print(
    'Thread has started.'
    Это может помочь улучшить организацию кода.
    Слушай, а hvaet ли какие-то аналоги этого подхода на других языках?

  9. Смотрите, ещё можно использовать asyncio для управления асинхронными задачами:

    Программный код:
      import asyncio
      
      async def timer_task
    ():
          
    await asyncio.sleep(3)
          print(
    'Asyncio timer completed')
      
      
    async def main():
          
    asyncio.create_task(timer_task())
          print(
    'Waiting in asyncio...')
          
    await asyncio.sleep(4)
      
      
    asyncio.run(main()) 
    Этот подход поможет уйти от стандартной многопоточности и использовать асинхронное программирование.

  10. Цитата Сообщение от Scheherazade
    Смотрите, ещё можно использовать asyncio для управления асинхронными задачами:

    Программный код:
      import asyncio
      
      async def timer_task
    ():
          
    await asyncio.sleep(3)
          print(
    'Asyncio timer completed')
      
      
    async def main():
          
    asyncio.create_task(timer_task())
          print(
    'Waiting in asyncio...')
          
    await asyncio.sleep(4)
      
      
    asyncio.run(main()) 
    Этот подход поможет уйти от стандартной многопоточности и использовать асинхронное программирование.
    Звучит заманчиво! Надо будет попробовать asyncio, хотя не очень понятно, чо как работает.

Страница 1 из 2 12 ПоследняяПоследняя