Skip to content

Instantly share code, notes, and snippets.

View richardkiss's full-sized avatar

Richard Kiss richardkiss

View GitHub Profile

Keybase proof

I hereby claim:

  • I am richardkiss on github.
  • I am richardkiss (https://keybase.io/richardkiss) on keybase.
  • I have a public key whose fingerprint is 1BE0 3D39 4138 A2C2 E2EF 64D4 E0F4 3326 DBD8 AB6A

To claim this, I am signing this object:

#!/usr/bin/env python
"""
When PYTHONASYNCIODEBUG is set to 1, this causes a strange error:
TypeError: send() takes 2 positional arguments but 7 were given
Invoke as follows:
$ PYTHONASYNCIODEBUG=1 python3 put_get_bug.py
#!/usr/bin/env python
"""
This is an example of what seems to be a garbage collection bug in Python 3.4.0
that does not exist in Python 3.3.3.
The example uses asyncio to create a producer that multiplexes to N consumers.
On my Mac, with N=100, 38 consumers are incorrectly garbage collected and only execute
once, dropping the surviving consumer count to 62.
#!/usr/bin/env python
"""
This works fine in Python 3.3, but causes a strange error in Python 3.4.0:
TypeError: send() takes 2 positional arguments but 3 were given
"""
import asyncio