This library is a native OpenMP implementation in python.
The barrier, critical, for, parallel, parallel for and single directives are supported,
as well as the reduction, private, schedule and nowait clauses.
Here is an example program that uses the library.
#!/usr/bin/env python3
import omp
from omp import OpenMP
from functools import reduce
N = 20
@omp.enable
def main():
acc = 0
acc2 = 1
with OpenMP("parallel"):
with OpenMP("for reduction(+:acc) reduction(*:acc2)"):
for i in range(1, N):
acc += i
acc2 *= i
print("Actual result:", acc, acc2)
print("Expected result:", sum(range(1, N)), reduce((lambda a, b: a*b), range(1, N), 1))
if __name__ == '__main__':
main()