technique:python:bash_multithreading

Ceci est une ancienne révision du document !


Python, bash et Multithreading

Lancer un script bash avec nice 19 (faible priorité):

from subprocess import Popen
 
resultat = Popen(["nice -n 19 bash nomduscript.sh"], shell = True)
resultat.wait()
 
if resultat.returncode == 0:
    print("Succes")

Cas de processus en tâche de fond et qui redonne la main au fil principal

from multiprocessing import Process

def tache_en_fond(mes_vars):
    # Fait des trucs en tâche de fond

if __name__ == '__main__':
    p = Process(target=tache_en_fond, args=(mes_vars),daemon=True)
    p.start()
    print("On continue le fil")

from psutil import cpu_count

# ou from os import cpu_count

cpu_count()

Le loadaverage se récupère facilement avec :

open("/proc/loadavg").readline().split(" ")[:3]

Et un petit script qui permet de lancer un truc quand la charge redescend.

import time
 
#wait if load average is too high
def load_average_wait(treshold=1):
    # If server is above the treshold value, wait for lower load before continue
    while float(open("/proc/loadavg").readline().split(" ")[:3][0])> treshold:
        time.sleep(10)
 
# my script part that eat a lot...
while True:
    # Encode video, is there anything else eating so much cpu in the universe ?
    encode_video()
    # wait if cpu start boiling...
    load_average_wait(1.5)
  • technique/python/bash_multithreading.1622324096.txt.gz
  • Dernière modification : 2021/05/29 23:34
  • de francoisa