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 -- https://mail.python.org/mailman/listinfo/python-list