A Parallel Model for the Belousov- Zhabotinsky Oscillating Reaction with Python and Java

Antonio J. Tomeu, Alberto G. Salguero, Manuel I. Capel


The programing language Python has been rapidly gaining in popularity and it has now become the first choice for implementing all kinds of systems in different software development fields. Programmers now use it for parallel processing on multicore and manycore architectures through specific modules such as Numba, PyCuda or mpi4Py. Much analysis work has been conducted to compare the performance of Python and commonly-used programming languages such as Java. This article presents a further comparison by solving the Belousov-Zhabotinsky oscillating reaction problem with both languages by using symmetrical multiprocessing with data partition.


Belousov-Zhabotinsky oscillating reaction; barrier; concurrency; threads; Java; multiprocessing; Python; processes; speedup locks; mutual exclusion; synchronization


Adamatzky, A., De Lacy, B. & Asai, T. Reaction-Diffusion Computers. Elsevier B. V.,

Akhter, S. & Roberts, J. Multicore Programming Increasing Performance through

Software Multithreading. Intel Press, Digital Edition, 2006.

Balaji, P. (ed.) Programming Models for Parallel Computing. The MIT Press, 2015.

Bandman, O. Mapping Physical Phenomenon to CA-Models. Automata-2008. Theory and

Applications of Cellular Automata, 381-395. Luniver Press, 2008.

Batty, M., Memarian, K., Owens, S., Summit, S. & Sewell. P. Clarifying and Compiling

C/C++ Concurrency: from C++11 to Power. POPL'12.


Boehm, H. Threads Basics. What Every Programmer Should Know About Memory

Models Issues. HPL Technical Report, 2009


Fernández, J. Java 7 Concurrency Cookbook. Packt Publishing, 2012.

Göetz, B., Peierls, T., Bloch, J., Bowbeer, J., Holmes, D. y Lea, D. Java Concurrency in

Practice. Addison-Wesley, 2006.

Goram. A.K. & From, A. A Comparative analysis between parallale models in C/C++ and

C#/Java. http://kth.diva-portal.org/smash/get/diva2:648395/FULLTEXT01.pdf. 2013.

Lea, D. Programación Concurrente en Java. Principios y Patrones de Diseño. Addison

Wesley, 2000.

Mikhailov, A. S. and Showalter, K., Control of waves, patterns and turbulence in chemical

systems. Physics Reports 425, 79-194, 2006.

Nefedev, K.V. & Peretyako, A.A. Superlinear Speedup of Parallel Calculation of Finite

Number Ising Spins Partition Function. Proceedings of Third International Conference of

High Performance Computing HPC-UA, 282-286, 2013.

Oaks, S. & Wong, H. Java Threads, 3rd Edition. O’Reilly, 2004.

Rauber, T. & Rünger, G. Parallel Programming for Multicore and Cluster Systems.

Second Edition. Springer-Verlag, 2012.

Ringler, Roger. C# Multithreaded and Parallel Programming. Packt Publishing, 2014.

Robbins, K. & Robbins, S. Practical Unix Programming. A Guide to Concurrency,

Communication and Multithreading. Prentice Hall, 1996.

The Computer Language Benchmarks Game, 2017. In


The Top Programing Languages 2017. In https://spectrum.ieee.org/static/interactive-thetop-


Sharifulina, A. & Elokhin, V. Simulation of Heterogeneous Catalytic Reaction by

Asynchronous Cellular Automata on Multicomputer. Parallel Computing Technologies.

Lectures Notes in Computer Science, volume 6873, 204-209, 2011.

Subramanian, V. Programming Concurrency on the JVM: Mastering Synchronization,

STM and Actors. The Pragmatic Programmers, 2011

Yoshida, R. Self-Oscillating Gels Driven by the Belousov-Zhabotinsky Reaction as Novel

Smart Materials. Advanced Materials, Vol. 22, issue 31, pp. 3463-3483, 2010

Zaccone, G. Python Parallel Programming Cookbook. Packt Publishing, 2015

Full Text: PDF


Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 License.