Download full Python High Performance Programming 1st Edition Gabriele Lanaro ebook all chapters
Download full Python High Performance Programming 1st Edition Gabriele Lanaro ebook all chapters
com
https://ebookmeta.com/product/python-high-performance-
programming-1st-edition-gabriele-lanaro/
OR CLICK HERE
DOWLOAD NOW
https://ebookmeta.com/product/high-performance-python-2nd-edition-
micha-gorelick/
ebookmeta.com
https://ebookmeta.com/product/programming-crystal-create-high-
performance-safe-concurrent-apps-1st-edition-simon-st-laurent/
ebookmeta.com
https://ebookmeta.com/product/clojure-high-performance-jvm-
programming-1st-edition-eduardo-diaz-shantanu-kumar-akhil-wali/
ebookmeta.com
https://ebookmeta.com/product/surgery-sixer-for-nbe-5th-edition-r-
rajamahendran-harindra-sandhu/
ebookmeta.com
Tajikistan Bradt Travel Guides 3rd ed 2020 Sophie
Ibbotson
https://ebookmeta.com/product/tajikistan-bradt-travel-guides-3rd-
ed-2020-sophie-ibbotson/
ebookmeta.com
https://ebookmeta.com/product/the-multilingual-turn-implications-for-
sla-tesol-and-bilingual-education-first-edition-stephen-may/
ebookmeta.com
https://ebookmeta.com/product/algorithms-4th-edition-robert-sedgewick-
kevin-wayne/
ebookmeta.com
https://ebookmeta.com/product/world-war-ii-and-the-west-it-
wrought-1st-edition-mark-brilliant-editor/
ebookmeta.com
The Dragon King Collection In the Hall of the Dragon King
The Warlords of Nin and The Sword and the Flame 2nd
Edition Stephen R Lawhead
https://ebookmeta.com/product/the-dragon-king-collection-in-the-hall-
of-the-dragon-king-the-warlords-of-nin-and-the-sword-and-the-
flame-2nd-edition-stephen-r-lawhead/
ebookmeta.com
Table of Contents
Python High Performance Programming
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers and more
Why Subscribe?
Free Access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Benchmarking and Profiling
Designing your application
Writing tests and benchmarks
Timing your benchmark
Finding bottlenecks with cProfile
Profile line by line with line_profiler
Optimizing our code
The dis module
Profiling memory usage with memory_profiler
Performance tuning tips for pure Python code
Summary
2. Fast Array Operations with NumPy
Getting started with NumPy
Creating arrays
Accessing arrays
Broadcasting
Mathematical operations
Calculating the Norm
Rewriting the particle simulator in NumPy
Reaching optimal performance with numexpr
Summary
3. C Performance with Cython
Compiling Cython extensions
Adding static types
Variables
Functions
Classes
Sharing declarations
Working with arrays
C arrays and pointers
NumPy arrays
Typed memoryviews
Particle simulator in Cython
Profiling Cython
Summary
4. Parallel Processing
Introduction to parallel programming
The multiprocessing module
The Process and Pool classes
Monte Carlo approximation of pi
Synchronization and locks
IPython parallel
Direct interface
Task-based interface
Parallel Cython with OpenMP
Summary
Index
Python High Performance
Programming
Python High Performance
Programming
Copyright © 2013 Packt Publishing
Every effort has been made in the preparation of this book to ensure
the accuracy of the information presented. However, the information
contained in this book is sold without warranty, either express or
implied. Neither the author, nor Packt Publishing, and its dealers and
distributors will be held liable for any damages caused or alleged to
be caused directly or indirectly by this book.
Livery Place
35 Livery Street
ISBN 978-1-78328-845-8
www.packtpub.com
Gabriele Lanaro
Reviewers
Daniel Arbuckle
Mike Driscoll
Albert Lukaszewski
Acquisition Editors
Owen Roberts
Harsha Bharwani
Commissioning Editor
Shaon Basu
Technical Editors
Akashdeep Kundu
Faisal Siddiqui
Project Coordinator
Sherin Padayatty
Proofreader
Linda Morris
Indexer
Rekha Nair
Production Coordinators
Pooja Chiplunkar
Manu Joseph
Cover Work
Pooja Chiplunkar
About the Author
Gabriele Lanaro is a PhD student in Chemistry at the University of
British Columbia, in the field of Molecular Simulation. He writes high
performance Python code to analyze chemical systems in large-scale
simulations. He is the creator of Chemlab—a high performance
visualization software in Python—and emacs-for-python—a collection
of emacs extensions that facilitate working with Python code in the
emacs text editor. This book builds on his experience in writing
scientific Python code for his research and personal projects.
Did you know that Packt offers eBook versions of every book
published, with PDF and ePub files available? You can upgrade to the
eBook version at www.PacktPub.com and as a print book customer,
you are entitled to a discount on the eBook copy. Get in touch with
us at <service@packtpub.com> for more details.
http://PacktLib.PacktPub.com
This book starts from the basics and builds on them, therefore, I
suggest you to move through the chapters in order.
The book was written and tested on Ubuntu 13.10. The examples
will likely run on Mac OS X with little or no changes.
However, the scope of this book is broad and the concepts can be
applied to any domain. Since the book addresses both basic and
advanced topics, it contains useful information for programmers with
different Python proficiency levels.
Conventions
In this book, you will find a number of styles of text that distinguish
between different kinds of information. Here are some examples of
these styles, and an explanation of their meaning.
def visualize(simulator):
New terms and important words are shown in bold. Words that
you see on the screen, in menus or dialog boxes, for example,
appear in the text like this: "You can navigate to the Call Graph or
the Caller Map tabs by double-clicking on the rectangles."
Note
Warnings or important notes appear in a box like this.
Tip
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what
you think about this book—what you liked or may have disliked.
Reader feedback is important for us to develop titles that you really
get the most out of.
If there is a topic that you have expertise in and you are interested
in either writing or contributing to a book, see our author guide on
www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a
number of things to help you to get the most from your purchase.
Downloading the example
code
You can download the example code files for all Packt books you
have purchased from your account at http://www.packtpub.com. If
you purchased this book elsewhere, you can visit
http://www.packtpub.com/support and register to have the files e-
mailed directly to you.
Errata
Although we have taken every care to ensure the accuracy of our
content, mistakes do happen. If you find a mistake in one of our
books—maybe a mistake in the text or the code—we would be
grateful if you would report this to us. By doing so, you can save
other readers from frustration and help us improve subsequent
versions of this book. If you find any errata, please report them by
visiting http://www.packtpub.com/submit-errata, selecting your
book, clicking on the errata submission form link, and entering
the details of your errata. Once your errata are verified, your
submission will be accepted and the errata will be uploaded on our
website, or added to any list of existing errata, under the Errata
section of that title. Any existing errata can be viewed by selecting
your title from http://www.packtpub.com/support.
Piracy
Piracy of copyright material on the Internet is an ongoing problem
across all media. At Packt, we take the protection of our copyright
and licenses very seriously. If you come across any illegal copies of
our works, in any form, on the Internet, please provide us with the
location address or website name immediately so that we can
pursue a remedy.
You may also want to assess the total execution time of your
program and see how it is affected by your changes. We will learn
how to write benchmarks and how to accurately time your programs.
Designing your application
When you are designing a performance-intensive program, the very
first step is to write your code without having optimization in mind;
quoting Donald Knuth:
The mantras that you should remember when optimizing your code,
are as follows:
Hoewel hij erg slap was, na al wat hij geleden had, was hij binnen een
week weêr geheel de oude van voorheen, daar hij door zijn vrouw zóó
teederlijk verzorgd werd, dat hij zijn gezondheid spoedig weêr terug
kreeg.
No. 24. Hoe een jong Warrau-Indiaantje uit de handen der Caraïben
ontkwam. (W.)
Na een poos riep hij de vrouwen toe, dat eenige mannen de rivier
kwamen overzwemmen; maar de vrouwen staken er den gek meê, en
riepen hem toe: „Het is best, laten ze maar komen! Wij zullen ons best
met hen vermaken”. De mannen waren echter menschenetende
Caraïben; want pas hadden ze den oever bereikt, of ze wierpen zich op
de vrouwen, slachtten ze allen en begonnen het vleesch te koken. De
jongen in den boom trilde van angst en schrik, maar durfde niet naar
beneden te komen. De Caraïben bewaakten de korjaal om te zien of de
een of ander de boot zou komen halen, maar op onregelmatige
tusschenpoozen liepen zij heen en weêr van de plek van den misdaad
naar de landingsplaats. Gedurende een van deze oogenblikken zag de
jongen kans, vlug van den boom af te komen, en nadat hij zijn pijl in
stukken had gebroken 57 en de stukken over zijn lichaam had gewreven,
om zich dapper te maken, sprong hij in de korjaal en parelde hij zoo
hard hij kon naar het midden der rivier.
Toen de oudste eindelijk uit zijn dronkenschap ontwaakte, zag hij, dat hij
geheel alleen was in een vreemde bouwvallige hut; er bleef voor hem
nu niets anders over, dan troosteloos naar zijn woonplaats terug te
keeren.
Op zijn weg van het bosch naar huis kwam een man eens voorbij een
banab*, zonder bewoner. Hij vond er alleen een Pot, zacht pruttelend op
het vuur. De Pot begon te spreken 58 en vroeg hem of hij honger had.
Toen hij ten antwoord gaf: „Ik ben uitgehongerd”, zei de Pot:
„Uitstekend! Ik zal een vogelbout voor je koken”. Onmiddellijk deed de
Pot, wat hij beloofd had, en toen de man verzadigd was, stond hij op en
vervolgde zijn weg naar zijn hut.
Daar aangekomen, zette zijn vrouw visch, die zij gereedgemaakt had,
voor hem neêr. Maar de man zei, „neen, ik [123]dank je, ik ben
verzadigd”. Zoo nu en dan verzon de man een uitvlucht, om op stap te
gaan, en verzuimde nimmer een bezoek aan den Pot te brengen. „Ik
heb honger, je moet nu eens een hapje vleesch voor me klaar maken”,
zei de man. Dadelijk begon de Pot weêr te koken en na korten tijd had
hij een stevig maal tapir-vleesch. Toen hij weder bij zijn vrouw kwam,
zette zij een cassavegerecht voor hem neêr, 59 maar haar man zei weêr:
„ik heb geen trek, mijn buik staat bol.” Nadat hij twee dagen in de hut
was gebleven en al het voedsel had geweigerd, dat zijn vrouw bij hem
bracht, bracht hij weêr een bezoek aan den gelukspot, die hem
trakteerde op vogelbout en vleesch en bij zijn thuiskomst verzekerde hij
weêr zijn vrouw, dat hij in niets trek had.
Bij zijn terugkeer bedankte hij weêr voor hetgeen zijn vrouw hem bracht.
Maar er was een geringe voorraad eten voor de huishouding, en de
vrouw vroeg haar man daarom, om morokot* te gaan schieten. De
zoons echter begaven zich ongemerkt naar de banab, waar zij
eveneens met den Pot begonnen te spreken, en om vogels en vleesch
vroegen. Nadat de jongens zich te goed hadden gedaan, begonnen zij
den Pot zóó goed schoon te maken, dat niet de minste geur
achterbleef. Even daarna kwam de vader van [124]den vischtocht terug
en gaf den morokot aan zijn vrouw; maar hij bedankte als gewoonlijk.
„Ik heb er geen trek in, ik ben voldaan”, zei hij weêr. Stilletjes sloop hij
weêr weg naar zijn Gelukspot in het bosch, en vroeg hem weêr, voor
hem te willen koken, maar hij wilde niet meer koken, noch voor hem,
noch voor iemand anders; zóó schoon hadden ze den Pot* gemaakt.
De man begon toen te jammeren, maar de Pot zei: „je bent begeerig
geweest; je hebt niets van het gevogelte en het vleesch aan je vrouw en
kinderen gegeven; je hebt alles alleen opgegeten.”
Er waren eens twee zusters, die voor haar broêr zorgden, en al haar
best voor hem deden, maar die geen drank konden bereiden, die naar
zijn smaak was. De broêr vond het niets prettig, en kreeg er nu genoeg
van; hij beklaagde zich bij zijn zusters, zeggende, dat hij iemand zou
willen vinden, die voor hem een lekkeren zoeten drank zou kunnen
bereiden, even zoet als honig. De zusters verzetten zich er niet tegen,
en zeiden, dat zij maar al te gelukkig zouden zijn, wanneer hij de
geschikte vrouw vond, die drank naar zijn smaak kon maken.
Eens op een dag, toen hij door het bosch ging, sprak hij luide zijn
wensch uit, dat hij een vrouw verlangde, die een drank zou weten te
bereiden, even zoet als de honig, die de bij weet te maken. Niet zoodra
had hij zijn wensch uitgesproken, of hij hoorde voetstappen achter zich
en omziende, zag hij een vrouw naar zich toekomen. „Wat wilt ge, waar
gaat ge heen? Ge sprak mijn naam Kohóra* uit. Welnu hier ben ik.” De
man, erg verheugd, maakte haar zijn wensch en die van zijn zusters
kenbaar en toen zij hem vroeg, of hij dacht, dat zij bij zijn familie in den
smaak zou vallen, antwoordde hij, dat hij daar zeker van was. [125]
Kohóra ging dus met hem mede naar zijn hut, en toen zijn ouders hem
vroegen, hoe hij aan haar gekomen was, antwoordde zij, dat zij meê
was gekomen, omdat hun zoon haar geroepen had. Zij begon nu den
gevraagden drank te bereiden. En hoe deed zij dat? Wel, zij had slechts
haar pink in het water te steken, daarmeê het water wat om te roeren,
en de drank was gereed. De drank smaakte zoet! zoet!! zoet!!! Nooit
nog had de drank zóó lekker zoet gesmaakt. Van dien tijd af hadden zij
nu altijd een zoeten drank; want telkens als Kohóra haar man water
bracht, had zij haar pink er in te steken, het wat om te roeren en het op
deze wijze zoet te maken. Maar ten slotte begon de man al dat zoete te
vervelen, en hij begon er met Kohóra over te twisten. „Wel, dat is
grappig”, zei ze, „je verlangdet zoeten drank; je riep mij, om dien voor je
te bereiden. Ik kwam; ik maakte een lekkeren, zoeten drank voor je, en
nu ben je nog niet voldaan. Je kunt er nu zelf voor zorgen”. En pas had
zij deze woorden uitgesproken, of zij verdween oogenblikkelijk.
Van dien tijd af is het volk gestraft geworden, want het moet zich veel
moeite geven, om in de boomen te klimmen, den honig uit den boom te
snijden, en moet het den honig zuiveren, om hem voor zoetmakende
doeleinden te kunnen gebruiken.
Toen zijn vrouw dit zag, zei zij bij zich zelf: „Mijn man moet toch wel een
ware semi-chichi zijn, om voor mij water in een korf te kunnen brengen.”
Zij begreep er evenwel niets van en besloot hem nu een tweede maal
op den proef te stellen.
Zij zond hem er nu op uit, om een stuk bosch voor haar schoon te
kappen, maar toen hij iederen morgen het werk wilde voortzetten, zag
hij tot zijn bevreemding, dat alle boomen, die hij den vorigen dag geveld
had, weêr recht overeind stonden. Wat was de oorzaak daar wel van?
Wel, op verzoek van den koningsgier vlogen alle stinkvogels iederen
nacht naar het veld, en zetten de boomen, die op den grond lagen,
weêr overeind! Arme Maconaura! Hij begreep er nog steeds niets van.
Maar hij wist er iets op. Hij ging nl. naar de Koeshi-mieren* en verzocht
hen, al het gevelde: stam, takken en bladeren voor hem te willen
weghalen—hetgeen zij ook deden. Tegen zulke vernielers konden de
stinkvogels niets uitrichten, en met de hulp van dit kleine grut gelukte
het Maconaura het veld spoedig schoon te kappen.
Zijn vrouw, die steeds meer tot de overtuiging kwam, dat haar man een
groote piaiman was, wilde hem toch nog eens voor de derde maal op
de proef stellen. Zij zond hem er nu op uit, om een zitbank voor zijn
schoonmoeder te maken, met aan elk uiteinde de uitgesneden beeltenis
van de oude vrouw. Dit zou, dacht zij, voor hem wel geheel onmogelijk
zijn en Maconaura geloofde dit ook, want hij had nog nooit een oog
naar zijn schoonmoeder* geslagen. Hij dacht: „Nooit opgeven!” Maar
iedere keer, dat hij even in de richting der oude vrouw keek, bedekte zij
onmiddellijk haar gezicht met haar beide handen, en draaide het opzij of
naar beneden. [129]„Hoe nu”, dacht Maconaura, „krijg ik haar gelaat naar
boven, zoodat ik er een goed gezicht op heb”. Daar kreeg hij een inval.
Zonder dat de vrouw het merkte, klom hij tegen het dak van haar hut,
en wierp hij een bajaboe* naar beneden, die in haar lendenkleed terecht
kwam, zoodat de oude haar armen uitspreidde en een klein oogenblikje
naar boven keek, juist lang genoeg, om zijn doel te kunnen bereiken.
Maconaura begon nu met zijn werk; hij hakte het blok hout in een
zoodanigen vorm, dat hij aan ieder uiteinde het goed gelijkende portret
van zijn schoonmoeder kon maken.
Toen het werk gereed was, bracht zijn vrouw het bankje naar de oude
vrouw, die hartelijk begon te lachen, toen zij de beide portretten zag.
Beide vrouwen verbaasden zich er over, hoe Maconaura het had
klaargespeeld, om een zóó goed gezicht op zijn schoonmoeder te
hebben gehad, en daardoor een zóó sprekend gelijkend portret van
haar te hebben kunnen maken.
Zij verlieten dus het dorp, kwamen in hun nieuw verblijf aan en bleven
langen tijd bij hun verwanten, de stinkvogels. De vrouw kon niet
nalaten, telkens van de groote kunde van haar man te vertellen, die
alles kon doen, wat zij hem maar vroeg. De stinkvogels, daardoor
nieuwsgierig geworden, begonnen hem allerlei dingen te vragen, die,
naar zij meenden, onmogelijk waren—maar al het gevraagde bracht hij
tot stand. De stinkvogels konden die knapheid niet velen en begonnen
jaloersch te worden, zoodat zij eindelijk overeen kwamen, den man
gezamenlijk te dooden.
Maconaura, die een echte piaiman was, wist, wat zij met hem voor
hadden, en zei: „Uitstekend, laat mij naar mijn dorp terugkeeren en mijn
vrienden gaan opzoeken. Wij zullen het daar wel uitvechten”.
Onmiddellijk nam hij zijn vrouw en zijn zoontje meê, en met hun drieën
togen zij weder huiswaarts. Hier aangekomen, verzamelde hij alle
vogels uit den omtrek, en vertelde hun, dat zij voorbereid moesten zijn
op een stormloop der stinkvogels.
Toen deze er dan ook aankwamen en het groote leger vogels zagen,
gereed om hen te ontvangen, besloten zij door middel van een krijgslist
zich de overwinning te verzekeren, hetgeen hun door kracht alleen niet
zou gelukken.
Toen nu Maconaura bemerkt had, dat zijn vrouw bang voor hem was
geworden, omdat hij het doel van haar eigen volk, de stinkvogels, om
nl. de geheele wereld in brand te steken, verijdeld had, verliet hij haar
en ging hij zijn eigen weg. Zijn vrouw zond toen haar zoon er op uit, om
haar man heimelijk te overvallen, en hem te dooden, maar of hij dit
snoode plan tot uitvoering heeft gebracht, is mij niet bekend.
Sedert de mannen met een mooi gezicht niet in staat waren, om bij
hunne afzichtelijke kameraden te blijven, [132]scheidden zij zich van hen
af, trokken naar het Westen, terwijl de afzichtelijke mannen naar het
Oosten gingen 67, ieder de vrouwen, die ze hadden gekozen,
meenemend.
Tot den stam der in elk opzicht aantrekkelijke Indianen behoorde een
jonge man, Maconaura geheeten, die met zijn moeder samenwoonde.
De jongen was in één woord bekoorlijk, slank en bevallig, als men dit
ten minste van een man kan zeggen; hij droeg zijn kamiesa* op
elegante wijze, en vond zijns gelijke niet op de jacht en de vischvangst,
zoowel als in het vlechten, zoodat alle mannen hun vischkorven* voor
de laatste afwerking bij hem brachten. De oude moeder was niet minder
bekwaam in het maken van hangmatten en het gereed maken der
tapana*. Zij leefden in volkomen eensgezindheid, zoowel onder
elkander als met de leden van hun stam. Zij hadden geen last van
overmatige warmte, noch van kille vochtigheid; zij hadden niet van
booze dieren te lijden; want deze kwamen in de streek nog niet voor.
Met den bananenbek* als waarschuwer ging het beter, want toen de
vogel zijn pon! pon! liet hooren, kwam hij nog juist bijtijds, om zijn pijl
tusschen de leelijke oogen [133]van den kaaiman te schieten, die met
een gloe! gloe! onder water verdween.
Maconaura herstelde nu zijn vischkorf en vertrok. Maar nauwelijks was
hij in zijn hut teruggekomen of hij hoorde weêr het signaal pon! pon! van
den vogel, en toen hij aan de rivier kwam, zag hij daar een
beeldschoone Indiaansche, die tranen schreide. „Wie zijt Gij?” vroeg hij.
„Anoeannaïtoe”, antwoordde zij. „Waar komt Gij van daan?”—„Van heel
ver!”—„Wie zijn uwe verwanten?”—„O, vraag mij dat niet”, zei ze, en zij
bedekte haar gelaat met beide handen.
Het meisje, dat haast nog een kind was, nam haar intrek bij Maconaura
en diens moeder. Naarmate zij grooter werd, nam haar schoonheid en
bevalligheid zóó toe, dat Maconaura haar eindelijk zijn liefde bekende
en haar tot zijn vrouw vroeg. Hoewel zij eerst met tranen in de oogen
een weigerend antwoord gaf, stemde zij ten slotte toe, hoewel het
samenleven niet correct was, daar Maconaura nog niet de toestemming
harer ouders had gevraagd, wier namen hem nog altijd door zijn vrouw
onthouden werden.
Toen zij na verscheidene weken reizen met hun korjaal aan een kamp
aankwamen, riep Anoeannaïtoe: „Wij zijn [134]er, ik ga mijn moeder
opzoeken, zij zal U een kalebas brengen, gevuld met bloed en rauw
vlees, en een andere met beltiri* en cassavebrood. Ons lot hangt van
Uw keus af.” De jongeman koos, toen de oude vrouw verscheen,
zonder aarzelen de beltiri en het brood, waarop zij zei: „Je hebt een
goede keus gedaan. Ik geef de toestemming tot het huwelijk, maar ik
vrees dat mijn man zich er sterk tegen verzetten zal.” Kaikoutji* was de
naam van haar echtgenoot.
Maconaura’s moeder had dagelijks het droevige bouta! bouta! van den
Otolin* gehoord, toen het eens op een dag door het afschuwelijke,
onheilspellende popopo! van den uil werd gevolgd.
Nu wetende, dat haar zoon dood was, liet zij zich door den verkondiger
van het slechte nieuws naar de plaats des onheils brengen; en toen zij
zijn korjaal met zijn lijk eindelijk had gevonden, keerde zij diep bedroefd
er mede naar haar volk terug.
Het groote tapana-feest werd in het dorp van Kaikoetji gevierd, waar
honderden Indianen vergaderd waren, mannen, vrouwen en kinderen.
Zij dronken en braakten, dronken en braakten weêr. Plotseling
verschenen onder de feestvierenden twee mannen, een in het vel van
den Jagoear, de ander in de gevlekte schubbenhuid van een Boa-
constrictor 69, en … in een oogenblik waren Kaikoetji en allen, die om
hem heen waren, gedood, een deel vermorzeld door de slagen van den
Jagoear, een ander gekraakt door de omstrengelingen van den boa. 70
Tegelijkertijd vierde het volk van het andere dorp ook het tapana-feest,
om de wraak te vieren, terwijl Maconaura’s moeder, beneveld door den
drank, in haar hangmat van haar verloren zoon lag te droomen. Het
feest was in vollen gang, toen plotseling Anoeannaïtoe verscheen. Maar
zij trad eenige stappen terug, toen zij haar naam hoorde uitspreken
door de droomende vrouw: „Anoeannaïtoe! Mijn kind, jij bent goed,
evenals je moeder! Maar waarom kom je hier? Mijn zoon, die je
verloren hebt, is niet meer. O! mijn zoon Maconaura, verheug je! Jij bent
nu gelukkig, want je bent nu gewroken door het bloed van je
moordenaars. Ja, je bent goed gewroken”. Onder het uitspreken van die
woorden voelde Anoeannaïtoe een verschrikkelijken tweestrijd in haar
ziel—de begeerte naar de liefde en de eisch der plicht. Maar bij de
woorden: „gewroken met het bloed”, kon zij zich niet langer inhouden,
en zich op de oude vrouw werpende, trok zij haar de tong uit den mond
en schoot er het doodend gif overheen. Terwijl zij zich over haar
zieltogend lichaam heen boog, sprak ze: „De kaaiman, die uw zoon bij
zijn vischkorf heeft gedood, was mijn broeder. Evenals mijn vader bezat
hij het hoofd van een kaaiman. Ik zou het willen vergeven. Mijn vader
wreekte den dood van zijn zoon door uw zoon met hetzelfde lot te
bestraffen.….met een pijl tusschen zijn oogen. Uw verwanten hebben
mijn vader en velen van zijn stam verslagen. Ja, ik zou dit alles
[139]misschien nog willen vergeven hebben, wanneer zij mijn lieve
moeder maar gespaard hadden. Maconaura is de oorzaak, dat wat mij
het dierbaarst was, is weggenomen. Ik neem nu op mijn beurt weg, wat
hem het dierbaarst was”.
Onder het slaken van een verschrikkelijken kreet vlood zij naar het
bosch en … onmiddellijk daarna vond in de natuur plaats, wat tot nu toe
onbekend was geweest: de winden antwoordden met een orkaan, die
de boomen neêr velde, en de zwaarste stammen ontwortelde. Dikke
wolken bedekte het gelaat van Ahadeli, terwijl onheilspellende
bliksemstralen en het rommelen des donders de donkere wereld deden
sidderen. Ontzettende regenstroomen deden de rivieren buiten hun
oevers treden. De dieren, die tot nu toe vreedzaam onder elkander
geleefd hadden, begonnen elkander aan te vallen, en elkaar te
verslinden. De slang trof met zijn vergif; de kaaiman verbrijzelde met
zijn vreeselijke kaken al wat van levende wezens onder zijn bereik
kwam; en de jagoear scheurde het vleesch uit het lichaam van den
onschuldigen Agoeti.
Anoeannaïtoe, gevolgd door een heel leger van wilde beesten, zette
haar zinneloozen tocht voort, totdat zij op den top van een enormen rots
aankwam, waarvan een waterval met donderend geweld naar omlaag
stortte. Hier staakte zij haar loop; aan den rand van den afgrond strekte
zij haar armen uit, en toen, zich vooroverbuigend, plofte zij in de diepte
neêr. De wateren namen haar beneden op en sloten zich boven haar.
Niets was er meer van haar te zien dan een verschrikkelijke draaikolk.