Closed
Description
previous similar issue #1164
Problems
- When i use yapf (just import it) in multiprocess program, it will crash with 'EOFError: Ran out of inpu',log info below:
Reproduction
- yapf==0.40.2
rm -r ~/.cache/YAPF
- run this python code:
import multiprocessing
def proc():
import yapf
if __name__ == "__main__":
pp=[]
for i in range(100):
p = multiprocessing.Process(target=proc)
pp.append(p)
for p in pp:
p.start()
for p in pp:
p.join()
Reason
the problem code is here:
When in multi process enviroment,some process will create grammar cache(when ~/.cache/YAPF not exists), before the process write to the cache file, other process will see the file exist and load it, but the cache file is empty right now , so EOFError
will raise and the program crashed.
How to fix it?
- I think we need to add
try
here( ) like we had addtry
when we create the cache. - Or we can add a multiprocess.Lock here
- Or we can do
python -c 'import yapf'
before we start our multiprocess program.(for users,trick)
Metadata
Metadata
Assignees
Labels
No labels