#18643: python mmap 寫法


314159265358979323846264338327 ... (少年π)


import mmap
from sys import stdout
from sys import stdin
import contextlib
with contextlib.closing(mmap.mmap(stdin.fileno(),98915248,access=mmap.ACCESS_READ)) as mm:
 s=str(mm.readline()).replace('\x00','')
 s=s.replace('  ','')
 stdout.write(s[2:len(s)-1])
mm.close()

怎麼改?
為什麼不是TLE就是WA,我還以為mmap很快...
#18646: Re:python mmap 寫法


314159265358979323846264338327 ... (少年π)


import mmap
from sys import stdout
from sys import stdin
import contextlib
with contextlib.closing(mmap.mmap(stdin.fileno(),98915248,access=mmap.ACCESS_READ)) as mm:
 s=str(mm.readline()).replace('\x00','')
 s=s.replace('  ','')
 stdout.write(s[2:len(s)-1])
mm.close()

怎麼改?
為什麼不是TLE就是WA,我還以為mmap很快...

 

原來要用decode()啊~

#18647: Re:python mmap 寫法


icube (!@#$%^&*()_+)


import mmap
from sys import stdout
from sys import stdin
import contextlib
with contextlib.closing(mmap.mmap(stdin.fileno(),98915248,access=mmap.ACCESS_READ)) as mm:
 s=str(mm.readline()).replace('\x00','')
 s=s.replace('  ','')
 stdout.write(s[2:len(s)-1])
mm.close()

怎麼改?
為什麼不是TLE就是WA,我還以為mmap很快...
最後的 mm.close() 可以刪掉,因為 contextlib.closing 會處理。
另外就是用 decode 會比 str 來得自然,似乎也比較快。



#18648: Re:python mmap 寫法


314159265358979323846264338327 ... (少年π)


import mmap
from sys import stdout
from sys import stdin
import contextlib
with contextlib.closing(mmap.mmap(stdin.fileno(),98915248,access=mmap.ACCESS_READ)) as mm:
 s=str(mm.readline()).replace('\x00','')
 s=s.replace('  ','')
 stdout.write(s[2:len(s)-1])
mm.close()

怎麼改?
為什麼不是TLE就是WA,我還以為mmap很快...
最後的 mm.close() 可以刪掉,因為 contextlib.closing 會處理。
另外就是用 decode 會比 str 來得自然,似乎也比較快。



謝謝~