在时间段Y运行X个Python线程

2021-02-25 21:10:10 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我想运行400个线程,固定时间为5分钟。问题是我不知道如何将计时器作为一个整体放在踏板上(对线程不太熟悉)。到目前为止,我发现的唯一方法是从JobManager计时,并向作业传递一个stop事件(见下文)。但这会在进程之间休眠,而不是为整个进程计时,然后退出所有线程。在

有什么办法用Python2.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()
1条回答
网友
1楼 ·

你需要一个“超级线程”,你可以停止。

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()

相关问题