python 3 - лимит на пoтoки

Discussion in 'PHP' started by Дикс, 7 Jul 2011.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    скажите, чем oбуслoвлен лимит на потoки? не видел ещё ни разу, чтобы однoвременно рабoтало больше 200 штук
    мoжно ли егo увеличить?
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Дикс тысяча потоков пишущих в файл out.txt. Отследить, что почти все потоки запущены одновременно можете по этому же файлу
    Code:
    import threading
    import logging
    
    logging.basicConfig(filename='out.txt', level=logging.DEBUG)
    
    class worker(threading.Thread):
        def __init__(self, num):
            threading.Thread.__init__(self)
            self.thread_num = num
            
        def run(self):
            logging.warning('Thread %d started', self.thread_num)
            for i in range(200):
                logging.info('ident: %d num: %d', self.thread_num, i)
            logging.warning('Thread %d stopped', self.thread_num)
    
    for i in range(1000):
        worker(i).start()
     
    _________________________
  3. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    да, сорри, не хватило ума снять лимит в конфиге

    на данный момент вопрос несколько изменился
    300 потоков работает, при 400 - потоки получают эксепшен "не могу подключиться к файлу БД", используется sqlite.

    Почему они все не могут подключиться к одному файлу БД? Лимит в настройках sqlite?
     
  4. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Писать в базу данных из четырехсот потоков явно оптимальнее, чем из парочки, которые бы обрабатывали запросы этих четырехсот, 100%.
    И вообще, 400 потоков смущают, зачем так много? Лучше асинхронно работу реализовать, но использовать меньше потоков, а то все время уйдет на переключение контекстов, да и памяти будет больше использоваться.
     
    #4 GRRRL Power, 7 Jul 2011
    Last edited: 7 Jul 2011
  5. emmy

    emmy Member

    Joined:
    12 Oct 2009
    Messages:
    76
    Likes Received:
    17
    Reputations:
    8
    в топовых реализациях питона может работать только один поток, а все остальные залочены