На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD
  
    > Потоки в Питоне , сэмпл-код; может кому пригодится
      ExpandedWrap disabled
        import threading
         
        class clever_calc(threading.Thread):
            
            def __init__(self, fi):
                threading.Thread.__init__(self)
                self.event = threading.Event()
                self.fi = open(fi, 'w')
                
            def __enter__(self):
                self.start()
                
            def __exit__(self, ex_type, ex_value, ex_traceback):
                self.event.set()
                self.join()
                
            def run(self):
                i = 1
                while not(self.event.isSet()):
                    i += 1
                    for j in xrange(2,i):
                        if i % j == 0:
                            break
                    else: #кстати, это образчик применения (ELSE:) в (FOR/WHILE:)
                        print >> self.fi, i
                self.fi.close()
                print self.fi
         
         
         
         
        #запускаем поток для неспешного поиска простых чисел и с записью их в файло primes.txt:
        cc = clever_calc('E:/primes.txt')
        cc.start()
         
         
        #### здесь пашем как пчелки по своим делам ####
         
         
        #решаем что на сегодня простых чисел хватит и убиваем сс:
        cc.event.set()
        print cc
         
         
         
         
        --------два принта отпечатают:
         
        <closed file 'E:/primes.txt', mode 'w' at 0x00BA7C38>
        <clever_calc(Thread-1, stopped)>
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0194 ]   [ 15 queries used ]   [ Generated: 3.05.24, 15:29 GMT ]