37,743
社区成员




import os,time
from subprocess import *
from multiprocessing import *
def run_shell_cmd(cmd_str, index):
print('run shell cmd index %d'%(index,))
proc = Popen(['/bin/zsh', '-c', cmd_str],stdout=PIPE)
time.sleep(1)
outs = proc.stdout.readlines()
proc.stdout.close()
proc.terminate()
return
def multi_process_exc():
pool =
cmd_str = 'ps -ef | grep chromium'
for x in range(5000): #循环次数超过一定次数就会出现下面的问题
p = Process(target=run_shell_cmd, args=(cmd_str,x))
p.start()
pool.append(p)
for p in pool:
p.join()
if __name__ == "__main__":
multi_process_exc()
Process Process-4078:
Traceback (most recent call last):
File "/usr/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/usr/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "test.py", line 8, in run_shell_cmd
proc = Popen(['/bin/zsh', '-c', cmd_str], stdout=PIPE)
File "/usr/lib/python3.8/subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.8/subprocess.py", line 1603, in _execute_child
errpipe_read, errpipe_write = os.pipe()
OSError: [Errno 24] Too many open files
请问解决了吗?这个问题