help in pexpect multiprocessing

harirammanohar159 at gmail.com harirammanohar159 at gmail.com
Mon Nov 16 06:40:27 EST 2015


On Monday, 9 November 2015 18:07:36 UTC+5:30, hariramm... at gmail.com  wrote:
> Hi,
> 
> I am using multiprocessing with pexpect, issue is whenever i call a function which is having expect(), its throwing error which is genuine as multiple threads are processing it same time (i/o prompt same time by multiple processes..so issues in picture...), so i want to use lock for that section alone to avoid it, but still fails in implementing it...can you help me
> 
> username = input('Enter your username: ')
> password = getpass.getpass()
> 
> s = pxssh.pxssh()
> s.login ('host','username','password')
> s.sendline ('ps -ef|grep java')
> s.prompt(timeout=1)
> 
> Try 1:
> 
> if condition == 'met':
>        np = len(list1)
>        p = multiprocessing.Pool(np)
>        p.map(stop, [(ds) for ds in list1])
> 
> def stop(ds):
>         s.sendline ('cd /usr')
>         if condition:
>                 lock = threading.Lock()
>                 lock.acquire()
>                 s.expect('Enter username:')
>                 s.sendline ('user')
>                 s.expect('Enter password:*')
>                 s.sendline('pass')
>                 lock.release()
>         s.prompt(timeout=200)
>         print('stopped ds...')
> 
> Try 2:
> 
> if condition == 'met':
>         lock = Lock()
>         for ds in list1:
>                 Process(target=stop, args=(ds,lock)).start()
> 
> def stop(ds,l):
>         s.sendline ('cd /usr')
>         if condition:
>                 l.acquire()
>                 s.expect('Enter username:')
>                 s.sendline ('user')
>                 s.expect('Enter password:*')
>                 s.sendline('pass')
>                 l.release()
>         s.prompt(timeout=200)
>         print('stopped ds...')
> 
> Both are giving me same trace..
> 
> pexpect.ExceptionPexpect: isalive() encountered condition where "terminated" is 0, but there was no child process. Did someone else call waitpid() on our process?
> 
> Thanks in Advance

Hey Lucena,

Thank you for suggestion, yeah process queues doing the samething, creating new sesssion for each process and executing simulatenously.. requirement is served..

but still i want to tackle the situation with locks, but not able to as throwing the below error.

pexpect.ExceptionPexpect: isalive() encountered condition where "terminated" is 0, but there was no child process. Did someone else call waitpid() on our process? 



More information about the Python-list mailing list