Now I'm wondering - what is the point of the python version, if it will always be overridden by the C implementation? Are there circumstances (platforms, compile flags, ...) under which the C version would be unavailable when the python runtime is compiled?
It may be that other Python implementations use CPython's standard library, or at least part of it.
I think that PyPy in particular does this, but I'm not 100% sure. I know for certain that it uses pure Python implementation of some modules from somewhere. One program I took great pains to be PyPy compatible ended up being a lot slower in it, and it turned out to be that the built-in sqlite3 module has a C implementation in CPython that's faster than the pure-Python version even when runing in PyPy.
- Having people travel to a central location (e.g. a grocery store).
- What if the government is able to identify and isolate cases?
- Simulating multiple communities with travel, that put quarantine measures in place.
- What happens when people get tired of social distancing.
* * *
Thanks for sharing your code.
I see that you are using gnuplot to visualize the output of the script.
Have you considered using the csv module (https://docs.python.org/3/library/csv.html) to output the data, instead of using the print() function?
That way, you wouldn't have to manually add in spaces around the data and stringify the numeric data.
>>> import csv, sys
>>> writer = csv.writer(sys.stdout, delimiter=" ")
>>> writer.writerow(["#", "T", "S", "I", "R"])
# T S I R
In the script, usage would look something like this:
import csv
import sys
...
writer = csv.writer(sys.stdout, delimiter=" ")
writer.writerow(["#", "T", "S", "I", "R"])
writer.writerow([T, S, I, R])
while I > 1000:
...
writer.writerow([T, S, I, R])
Python version: https://github.com/python/cpython/blob/master/Lib/bisect.py
C version: https://github.com/python/cpython/blob/master/Modules/_bisec...