Am 16.11.2011 14:48 schrieb Eduardo Oliva:
Hello, I have a py script that reads for all "m2ts" video files and convert them to 
"mpeg" using ffmpeg with command line.

What I want to do is:

   I need my script to run 2 separated threads, and then when the first has 
finished, starts the next one....but no more than 2 threads.
   I know that Semaphores would help with that.
   But the problem here is to know when the thread has finished its job, to 
release the semaphore and start another thread.

Any help would be great.

I'm not sure if you need threads at all: if you launch a process with subprocess, it runs and you only would have to wait() for it. The same can be done with two processes.

Pseudocode:

LIMIT = 2

processes = []


def do_waiting(limit):
    while len(processes) >= limit:
        % take the first one...
        sp = processes.pop(0)
        % wait for it...
        st = sp.wait(100)
        if is None:
            % timeout, not finished yet, push back.
            processes.append(sp)
        else:
            % finished - don't push back, let outer for loop continue.
            print sp, "has finished with", st

for fname in list:
    % launch process ...
    sp = subprocess.Popen(...)
    % ... and register it.
    processes.append(sp)
    % If we are on the limit, wait for process to finish.
    do_waiting(LIMIT)

do_waiting(1)


Thomas
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to