summaryrefslogtreecommitdiff
path: root/test-flacs
diff options
context:
space:
mode:
authorLars Wirzenius <liw@gytha>2009-12-21 19:15:08 +0200
committerLars Wirzenius <liw@gytha>2009-12-21 19:15:08 +0200
commit2dec307b95b755231648c001a9bc3d4607378380 (patch)
tree2bd08b5538dfc784a75d65acdfd80f6ac2cf281f /test-flacs
parente1cd0507964d05a49d81dd4b6f3ffce2fe5383fa (diff)
downloadextrautils-2dec307b95b755231648c001a9bc3d4607378380.tar.gz
Rewritten.
Diffstat (limited to 'test-flacs')
-rwxr-xr-xtest-flacs50
1 files changed, 42 insertions, 8 deletions
diff --git a/test-flacs b/test-flacs
index e3b9a92..3028adc 100755
--- a/test-flacs
+++ b/test-flacs
@@ -5,12 +5,20 @@ import multiprocessing
import os
import subprocess
import sys
+import time
-def test_flac(filename):
- p = subprocess.Popen(['flac', '--totally-silent', '--test', filename])
- p.communicate()
- return filename, p.returncode == 0
+def test_flacs(job_queue, result_queue):
+ i = 0
+ for filename in iter(job_queue.get, None):
+ p = subprocess.Popen(['flac', '--totally-silent', '--test', filename])
+ p.communicate()
+ result_queue.put((filename, p.returncode == 0))
+ i += 1
+ if i >= 10:
+ time.sleep(1)
+ i = 0
+
def find_files(root):
pathnames = set()
@@ -20,7 +28,33 @@ def find_files(root):
pathnames.add(pathname)
return pathnames
-pool = multiprocessing.Pool()
-for filename, ok in pool.map(test_flac, find_files(sys.argv[1])):
- if not ok:
- print 'FAIL:', filename
+
+files = find_files(sys.argv[1])
+
+job_queue = multiprocessing.Queue()
+result_queue = multiprocessing.Queue()
+for job in files:
+ job_queue.put(job)
+for i in range(multiprocessing.cpu_count()):
+ p = multiprocessing.Process(target=test_flacs,
+ args=(job_queue, result_queue))
+ p.start()
+total = len(files)
+bad = list()
+for done in range(total):
+ result = result_queue.get()
+ sys.stderr.write('\r%d / %d done' % (done + 1, total))
+ sys.stderr.flush()
+ if result:
+ filename, ok = result
+ if not ok:
+ bad.append(filename)
+
+for i in range(multiprocessing.cpu_count()):
+ job_queue.put(None)
+
+sys.stderr.write('\n')
+
+for filename in bad:
+ print 'BAD:', filename
+