[Python] eseguire file o processo separato.

Matteo Perini perini.matteo a gmail.com
Dom 22 Lug 2012 17:21:30 CEST


ciao a tutti
la situazione è questa:
Mando in esecuzione il file task1 che riporto.

import subprocess
import time
import os
for i in range(110):
     print i
     if i==10:
         os.system('touch .lock')
         time.sleep(0.1)
         subprocess.Popen('./task2.py')
     if i==90:
         os.system('rm .lock')
     time.sleep(0.1)

Con subprocess (non sono riuscito con nient'altro.... se avete 
suggerimenti sono tutt'orecchi) riesco a lanciare il secondo script in 
parallelo al primo ma non mi sembra una cosa molto elegante soprattutto 
perchè vado a controllare la fine del secondo script cancellando un file 
(.lock).

il secondo script (task2.py) è questo:

#!/usr/bin/python
import time
a=True
d=open('data.txt','w')
x=1
while a:
     try:
         open('.lock')
         print x
         d.write("%i\n"%(x))
         x+=1
         time.sleep(0.05)
     except:
         a=False
         d.close()

Vorrei imparare e non riesco a trovare altre soluzioni...
Forse ho migliorato un po' la situazione usando i thread ma non vorrei 
creare pasticci.
Voi cosa ne pensate? come posso migliorare?
Il tutto dovrà essere integrato dentro la classe dell'interfaccia (gtk)
Questo il codice della prova con thread.

from threading import Thread
import time
import os
class task2(Thread):
     def __init__ (self):
         Thread.__init__(self)
     def run(self):
         print "run"
         subprocess.Popen("./task2.py")
for i in range(110):
     print i
     if i==10:
         os.system('touch .lock')
         t2=task2()
         t2.run()
     if i==50:
         os.system('rm .lock')

Rimane sempre il problema del file (.lock) per chiudere il subprocess.


Qualsiasi consiglio è gradito.
Ciao
Matteo P


Maggiori informazioni sulla lista Python