- 论坛徽章:
- 0
|
本帖最后由 Hadron74 于 2016-05-20 22:21 编辑
回复 1# z0415010
试着写了一个,应该满足你的要求。抛砖引玉:
- import threading
- import time
- from collections import deque
- command_list = deque([ "sleep {} ".format(i) for i in range(1,10,1)])
- def worker(command):
- from subprocess import call
- call(command,shell=True)
- print "Finished {}".format(command)
- return
- NUMBER_THREADS = 5
- TIME_INTERVAL = 0.5
- def run():
- command = command_list.pop()
- t = threading.Thread(target=worker, args=(command,))
- t.start()
- for i in range(NUMBER_THREADS):
- run()
- while command_list:
- time.sleep(TIME_INTERVAL)
- alive_threads = threading.enumerate()
- lat = len(alive_threads)
- if lat == 1 : break
- if lat <= NUMBER_THREADS : run()
复制代码- Finished sleep 5
- Finished sleep 6
- Finished sleep 7
- Finished sleep 8
- Finished sleep 9
- Finished sleep 4
- Finished sleep 1
- Finished sleep 2
- Finished sleep 3
复制代码 |
|