Yo para utilizar threads en Python me gusta más hacerlo así:
import threading
def proceso1(argumento1,argumento2):
loquesea
def proceso2():
loquesea
thread1 = threading.Thread(target=proceso1,args=(argumento1,argumento2))
thread2 = threading.Thread(target=proceso2)
thread1.start()
thread2.start()
Para lo de la condición esa de i = 1, es algo un poco delicado porque los threads comparten las variables globales y hay que tener cuidado yo lo haría algo así
import threading,
class auxiliar:
def __init__(self,user,pwd)
self.ftp_user = user
self.ftp_pwd = pwd
self.condicion = 0
def proceso1(self,argumento1,argumento2):
//cuando vayas a acceder alguna variable global hay que utilizar locks para
//que no casquen los threads, lo que hacen es apropiarde completamente de la cpu
//hasta que el lock se libere.
lock = threading.Lock()
lock.acquire()
self.condicion = 1
lock.release()
loquesea
def proceso2(self):
loquesea
def ejecucion(self):
lock = threading.Lock()
thread1 = threading.Thread(target=self.proceso1,args=(argumento1,argumento2))
thread2 = threading.Thread(target=self.proceso2)
thread1.start()
lock.acquire()
//En ven de un if tienes que poner un while para que se quede esperando a que se active la condicon
while(self.condicion == 0):
lock.release()
sleep(1)
lock.acquire()
lock.release()
thread2.start()
aux = auxiliar('user','pwd')
aux.ejecucion()