Difference between revisions of "Python"

From Quantum kot
Jump to navigation Jump to search
(m)
Line 39: Line 39:
 
         f.write("hello!\n")
 
         f.write("hello!\n")
 
     # close automatic, even if exception
 
     # close automatic, even if exception
 +
</syntaxhighlight>
 +
 +
 +
===Main function ===
 +
It is a good practice to indicate whether your python file  will be executed as a script by including
 +
"if __name__ == '__main__':" statement:
 +
<syntaxhighlight lang="python">
 +
def main():
 +
    pass
 +
# Do Something:
 +
 +
if __name__ == '__main__':
 +
  main()
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revision as of 03:21, 27 January 2023

Python Tips and Tricks


Array enumeration

For numpy

a = np.array([[1, 2], [3, 4]])
for index, x in np.ndenumerate(a):
    print(index, x)

For usual python

a = np.array([[1, 2], [3, 4]])
for index, x in enumerate(a):
    print(index, x)


Multiprocessing

from multiprocessing import Pool
def run_with_mp_map(items, do_work, processes=None, chunksize=None):
    print(f"running using multiprocessing with {processes=}, {chunksize=}")
    start_t = time.perf_counter()
    with Pool(processes=processes) as pool:
        results = pool.imap(do_work, items, chunksize=chunksize)
    end_t = time.perf_counter()
    wall_duration = end_t - start_t
    print(f"it took: {wall_duration:.2f}s")
    return results

Context manager

 with open(filename, "w") as f:
        f.write("hello!\n")
    # close automatic, even if exception


Main function

It is a good practice to indicate whether your python file will be executed as a script by including "if __name__ == '__main__':" statement:

def main():
    pass
# Do Something:

if __name__ == '__main__':
   main()


Measure execution timing

import time
start = time.perf_counter()
time.sleep(1)
end = time.perf_counter()
print(end - start)