User Tools

Site Tools


python

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
python [2026/04/01 20:31] – carlpython [2026/09/09 19:44] (current) – carl
Line 34: Line 34:
   * For socket fds, reconnecting causes the remote endpoint to burn resources as well.   * For socket fds, reconnecting causes the remote endpoint to burn resources as well.
   * For file fds, its not possible to synchronize access to them.  (if Python had better shared memory support and the correct atomics to modify the memory, this may be possible).   * For file fds, its not possible to synchronize access to them.  (if Python had better shared memory support and the correct atomics to modify the memory, this may be possible).
 +
 +
 +==== Problems with Multi Interpreters ====
 +Very few Python modules support it.  It's hard to tell which ones do support it, and the support seems arbitrary.
  
  
Line 63: Line 67:
  
 Python does not have a compacting garbage collector, so memory allocations eventually fill up RSS.   When a mixture of long lived and short lived objects are allocated around the same time, Python (pymalloc) allocates them possibly in the same arena.  When the short lived object is free, the long lived object holds the arena alive for ever. Python does not have a compacting garbage collector, so memory allocations eventually fill up RSS.   When a mixture of long lived and short lived objects are allocated around the same time, Python (pymalloc) allocates them possibly in the same arena.  When the short lived object is free, the long lived object holds the arena alive for ever.
 +
 +
 +==== Misc. APIs ====
 +List and Tuple types have an ''index'' method, but it throws if the element isn't present.   This forces you to use Exceptions as flow control.
 +
 +''set()'' objects don't support the ''del'' keyword:
 +
 +    >>> s = set()
 +    >>> s.add(99)
 +    >>> del s[99]
 +    Traceback (most recent call last):
 +      File "<stdin>", line 1, in <module>
 +    TypeError: 'set' object doesn't support item deletion
 +
 +
 +''enumerate(iterable, start=0)''
 +
 +The ''start'' parameter doesn't do what I expect.   I would have expected it to start at the element listed, but instead it just adds start to the returned tuple index:
 +
 +    >>> for i, k in  enumerate([9, 8, 7], 1): print (i, k)
 +    ... 
 +    1 9
 +    2 8
 +    3 7
 +
 +I would have expected this to return 2 total elements instead:
 +
 +    ...
 +    1 8
 +    2 7
 + 
 +
 +
python.1775075470.txt.gz · Last modified: by carl