mirror of https://github.com/flaggo/pydu.git
126 lines
1.9 KiB
Markdown
126 lines
1.9 KiB
Markdown
# misc
|
|
|
|
Miscellaneous utils like `timeout`, `trace` and so on.
|
|
|
|
## misc.timeout
|
|
```python
|
|
timeout(seconds)
|
|
```
|
|
|
|
This func decorates any func which may be hang for a while. The param `seconds`
|
|
can be either integer or float.
|
|
In `test.py`, you may write like below:
|
|
|
|
```python
|
|
import time
|
|
from pydu.misc import unix_timeout
|
|
@timeout(1)
|
|
def f():
|
|
time.sleep(1.01)
|
|
f()
|
|
```
|
|
|
|
And run `test.py`, will see `TimeoutError`.
|
|
|
|
|
|
## misc.trace
|
|
```python
|
|
trace(obj)
|
|
```
|
|
|
|
Tracing every statement and line number for running program, like `bash -x`.
|
|
In `test.py`, you may write like below:
|
|
|
|
```python
|
|
from pydu.misc import trace
|
|
@trace
|
|
def f():
|
|
print(1)
|
|
a = 1 + 5
|
|
b = [a]
|
|
print(2)
|
|
f()
|
|
```
|
|
|
|
And run `test.py`, will see below output from console:
|
|
|
|
```console
|
|
test.py(4): print(1)
|
|
1
|
|
test.py(5): a = 1 + 5
|
|
test.py(6): b = [a]
|
|
test.py(7): print(2)
|
|
2
|
|
```
|
|
|
|
|
|
## misc.memoize
|
|
```python
|
|
memoize(obj)
|
|
```
|
|
|
|
A simple memoize decorator for functions supporting (hashable)
|
|
positional arguments.
|
|
It also provides a `cache_clear()` function for clearing the cache.
|
|
|
|
```python
|
|
>>> @memoize
|
|
... def foo()
|
|
... return 1
|
|
...
|
|
>>> foo()
|
|
1
|
|
>>> foo.cache_clear()
|
|
>>>
|
|
```
|
|
|
|
|
|
## misc.memoize_when_activated
|
|
```python
|
|
memoize_when_activated(obj)
|
|
```
|
|
|
|
A memoize decorator which is disabled by default. It can be
|
|
activated and deactivated on request.
|
|
For efficiency reasons it can be used only against class methods
|
|
accepting no arguments.
|
|
|
|
```python
|
|
>>> class Foo:
|
|
... @memoize
|
|
... def foo()
|
|
... print(1)
|
|
...
|
|
>>> f = Foo()
|
|
>>> # deactivated (default)
|
|
>>> foo()
|
|
1
|
|
>>> foo()
|
|
1
|
|
>>>
|
|
>>> # activated
|
|
>>> foo.cache_activate()
|
|
>>> foo()
|
|
1
|
|
>>> foo()
|
|
>>> foo()
|
|
>>>
|
|
```
|
|
|
|
|
|
## misc.super_len
|
|
```python
|
|
super_len(obj)
|
|
```
|
|
|
|
Get length of object which has attribute named `__len__`, `len`, `fileno`, `tell`,
|
|
such as `list`, `tuple`, `dict`, `file` and so on.
|
|
|
|
```python
|
|
>>> from pydu.misc import super_len
|
|
>>> super_len([1, 2])
|
|
2
|
|
>>> super_len(open('test', 'w'))
|
|
0
|
|
```
|