Files
@ 3b755a58a8b5
Branch filter:
Location: Morevna/src/util.py - annotation
3b755a58a8b5
1.2 KiB
text/x-python
resettable stats
259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 259f29140f23 9f2b0a4f3538 9f2b0a4f3538 9f2b0a4f3538 9f2b0a4f3538 9f2b0a4f3538 9f2b0a4f3538 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 13d0327a4abb 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc 4b88aca70fbc | import os
import sys
def spawnDaemon(fun):
# do the UNIX double-fork magic, see Stevens' "Advanced
# Programming in the UNIX Environment" for details (ISBN 0201563177)
try:
pid = os.fork()
if pid > 0:
# parent process, return and keep running
return
except OSError as e:
print("fork #1 failed: {0} ({1})".format(e.errno,e.strerror),file=sys.stderr)
sys.exit(1)
os.setsid()
# do second fork
try:
pid = os.fork()
if pid > 0:
# exit from second parent
print("[{0}] server running".format(pid))
sys.exit(0)
except OSError as e:
print("fork #2 failed: {0} ({1})".format(e.errno,e.strerror),file=sys.stderr)
sys.exit(1)
fun()
# all done
os._exit(os.EX_OK)
def splitHost(host,defaultPort=0):
address,_,port=host.partition(":")
if not port: port=defaultPort
return (address,port)
class Progress:
def __init__(self,n,i0=0):
self._n=n
self._i0=i0
self._i=i0
self._last=""
def p(self,i):
i0=self._i0
n=self._n
assert i0<=i<n or n<i<=i0, (i0,i,n)
percentage=Progress._p(i,n,i0)
res="{0}%".format(percentage)
if res!=self._last:
print(res,end="\r")
self._last=res
def done(self):
print("100%")
@staticmethod
def _p(i,n,i0):
_1=1 if n>=i0 else -1
return 100*(i+_1-i0)//(n-i0)
|