Multithreaded python script calls the COMMAND LINE

johnny rampeters at gmail.com
Thu Dec 7 17:13:42 EST 2006


gagsl... at yahoo.com.ar wrote:

>
> That depends on how you invoke it: os.system creates a new shell which
> in turn creates a new process; the spawn* functions do that directly.

I am using os.system.  Here is my code

import ftplib, posixpath, threading
from TaskQueue import TaskQueue

def worker(tq):
    while True:
        host, e = tq.get()

        c = ftplib.FTP(host)
        c.connect()
        try:
            c.login()
            p = posixpath.basename(e)
            ps_dir = r'H:/ftp_download/'
            filename = download_dir+p
            fp = open(filename, 'wb')
            try: c.retrbinary('RETR %s' % e, fp.write)
            finally: fp.close()
        finally: c.close()
        if (p.lower().endswith('.ps') ):
            partFileName = p.split('.', 1)
            movedFile = download_dir + p
            #movedFile = p
            finalFile = ps_dir + partFileName[0]+'.pdf'
            encode_cmd = r'ps2pdf '+ movedFile + ' '+ finalFile
            os.system(encode_cmd)

        tq.task_done()

if __name__ == '__main__':
    main()

def main():
    q = TaskQueue()
    #host = 'ftp.microsoft.com'
    host = 'mysite.com'
    c = ftplib.FTP(host)
    c.connect()
    try:
        #c.login()
        c.login()

        #folder = '/deskapps/kids/'
        folder = ''
        for n in c.nlst(folder):
            if n.lower().endswith('.ps'):
                q.put((host, n))


    finally: c.close()

    numworkers = 4
    for i in range(numworkers):
        t = threading.Thread(target=worker, args=(q,))
        t.setDaemon(True)
        t.start()

    q.join()
    print 'Done.'

> Anyway, if you have many conversion processes running, you should pass
> them unique file names to avoid conflicts.
> Where does the '1' name come from? If it's you, don't use a fixed name
> - the tempfile module may be useful.

I am giving unique name to the converted file with .pdf.  I think
something up with the thread.  I am new to python, I am not sure what's
wrong.




More information about the Python-list mailing list