Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #98593

Re: help in pexpect multiprocessing

Newsgroups comp.lang.python
Date 2015-11-10 04:22 -0800
References <c0f3d85c-d801-4106-9e1c-a84a2c077a4d@googlegroups.com>
Message-ID <b92b602e-2a46-4c44-837f-9b7a97e7c28c@googlegroups.com> (permalink)
Subject Re: help in pexpect multiprocessing
From harirammanohar159@gmail.com

Show all headers | View raw


On Monday, 9 November 2015 18:07:36 UTC+5:30, hariramm...@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

Hi,

I am able to manage it by using process queues, thank you

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

help in pexpect multiprocessing harirammanohar159@gmail.com - 2015-11-09 04:37 -0800
  Re: help in pexpect multiprocessing harirammanohar159@gmail.com - 2015-11-10 02:16 -0800
  Re: help in pexpect multiprocessing harirammanohar159@gmail.com - 2015-11-10 04:22 -0800
  Re: help in pexpect multiprocessing Pablo Lucena <plucena24@gmail.com> - 2015-11-10 07:42 -0500
  Re: help in pexpect multiprocessing harirammanohar159@gmail.com - 2015-11-16 03:40 -0800

csiph-web