1

基本的には、400 スレッドを一定期間、たとえば 5 分間実行したいと考えています。問題は、トレッド全体にタイマーを配置する方法がわからないことです(スレッド化にはあまり慣れていません)。私がこれまでに見つけた唯一の方法は、JobManager から時間を計り、停止イベントを Job に渡すことです (以下を参照)。ただし、これは、プロセス全体のタイミングを計ってからすべてのスレッドを終了するのではなく、トレッド間でスリープします。

Python 2.7 を使用してこれを行う方法はありますか?

import threading, time    

# Job
def Job(i, stop_event):
  print
  print 'Start CountJob nr:', i
  print
  while(not stop_event.is_set()):
    pass
  print 'Job', i, 'exiting'

# run the Jobs
for i in range(0,400):
  p_stop = threading.Event()
  p = threading.Thread(target=Job, args=(i, p_stop))
  p.daemon = True
  p.start()
  time.sleep(10) 
  p_stop.set()
4

1 に答える 1

2

停止できる「スーパースレッド」が必要になります。

import threading, time

# Job
def Job(i, stop_event):
  print
  print 'Start CountJob nr:', i
  print
  while(not stop_event.is_set()):
    pass
  print 'Job', i, 'exiting'


def SuperJob(stop_event):
  for i in range(0,400):
    p = threading.Thread(target=Job, args=(i, stop_event))
    p.daemon = True
    p.start()

    if stop_event.is_set():
      return

# run the Jobs
stop_event = threading.Event()
p = threading.Thread(target=SuperJob, args=(stop_event,))
p.start()
time.sleep(10)
stop_event.set()
于 2013-09-20T14:58:00.177 に答える