Exemplo n.º 1
0
def thread_P2(nom):
    global RC
    tprint('{nom} : Debut du thread nom={nom}'.format(
        nom=nom,
        pid=multiprocessing.current_process().pid,
        tid=threading.get_ident()))

    for i in range(NbCoups):
        time.sleep(random.randint(0, 3))
        #P()
        S1.acquire()

        # Debut de section critique
        tprint('{nom} : Debut de section critique'.format(nom=nom))

        b = RC
        time.sleep(random.randint(0, 3))
        RC = b + 2
        tprint('{nom} : \t (i={i}) RC={RC}'.format(nom=nom, i=i, RC=RC))

        tprint('{nom} : Fin de section critique'.format(nom=nom))
        # fin de section critique
        # V()
        S1.release()

    tprint('{nom} : Fin du thread'.format(nom=nom))
Exemplo n.º 2
0
def avion():
    for i in range(nbAvions):
        SA2.acquire()
        time.sleep(random.randint(0, 3))
        nbProduction["avion"] += 1
        tprint('Un avion est achevé ({})'.format(i + 1))
        SAv.release()
Exemplo n.º 3
0
def thread_ping_pong(nom) :
    global chaine_ping_pong
    tprint( '{nom} : Debut du thread nom={nom}, pid={pid}, tid={tid}'.format(nom=nom, pid=multiprocessing.current_process().pid, tid=threading.get_ident()))

    for i in range(NbCoups):
        time.sleep(random.randint(0, 3))

	# A completer ...
        if nom is "PING" :
            SPI.acquire()
        else :
            SPO.acquire()
            

        # Debut de section critique
        tprint( '{nom} : Debut de section critique'.format(nom=nom))

        time.sleep(random.randint(0, 3))
        chaine_ping_pong = chaine_ping_pong + nom + ' '
        tprint( '{nom} : \t (i={i}) chaine_ping_pong={chaine_ping_pong}'.format(nom=nom, i=i, chaine_ping_pong=chaine_ping_pong) )

        tprint( '{nom} : Fin de section critique'.format(nom=nom))
	# fin de section critique

	# A completer ...
        if nom is "PING" :
            SPO.release()
        else :
            SPI.release()
            
    tprint( '{nom} : Fin du thread'.format(nom=nom))
Exemplo n.º 4
0
def thread_P2(nom):
    global RC
    tprint('{nom} : Debut du thread nom={nom}'.format(
        nom=nom,
        pid=multiprocessing.current_process().pid,
        tid=threading.get_ident()))

    for i in range(NbCoups):

        # A completer...

        semaphore.acquire()
        # Debut de section critique
        tprint('{nom} : Debut de section critique'.format(nom=nom))

        b = RC
        RC = b + 2
        tprint('{nom} : \t (i={i}) RC={RC}'.format(nom=nom, i=i, RC=RC))

        tprint('{nom} : Fin de section critique'.format(nom=nom))
        # fin de section critique
        semaphore.release()

# A completer...

    tprint('{nom} : Fin du thread'.format(nom=nom))
Exemplo n.º 5
0
def tampon_retirer ( tampon ) :
    if tampon_est_vide( tampon ) :
        tprint("Erreur Tampon Vide")
        return
    element=tampon.fifo[0]
    tampon.fifo=tampon.fifo[1:]
    return element
Exemplo n.º 6
0
def tampon_retirer(tampon):
    if tampon_est_vide(tampon):
        tprint("Erreur Tampon Vide")
        return
    time.sleep(random.randint(0, tampon.dureeMax))
    element = tampon.fifo[0]
    tampon.fifo = tampon.fifo[1:]
    return element
def aeroplane():
    for i in range(nbAvionsPrevus):
        moniteur_retirer(usine.tamponMoteur,"moteur")
        moniteur_retirer(usine.tamponCarlingueAileRoue,"carlingueAileRoue")
        moniteur_retirer(usine.tamponMoteur,"moteur")
        # A completer: retirer 1 carlingue1Ailes2Roues3 et 2 moteurs des tampons
        tprint( 'Un aeroplane est achevé ({})'.format(i+1))
        # A completer: deposer dans le tampon des aeroplane
        moniteur_deposer(usine.tamponAeroplne,"avion","1")
def carlingue1Ailes2():
    for i in range(nbAvionsPrevus):
        # A completer: retirer 1 carlingue et 2 ailes des tampons
        moniteur_retirer(usine.tamponAile,"aile")
        moniteur_retirer(usine.tamponCarlingue,"carlingue")
        moniteur_retirer(usine.tamponAile,"aile")
        tprint( 'Un assemblage 1 carlingue avec 2 ailes est achevé ({})'.format(i+1))
        # A completer: deposer dans le tampon des carlingue1Ailes2
        moniteur_deposer(usine.tamponCarlingueAile,"carlingueAile","1")
Exemplo n.º 9
0
def avion():
    for i in range(nbAvions):
        # A Compléter...
        carlingueAileRoue.acquire()
        moteurs.acquire()
        moteurs.acquire()
        time.sleep(random.randint(0, 3))
        nbProduction["avion"] += 1
        tprint('Un avion est achevé ({})'.format(i + 1))
        avions.release()
Exemplo n.º 10
0
 def exit_test(self, error=None):
     for p in self.processes:
         p.terminate()
     for p in self.processes:
         p.join()
     if error != None:
         tprint("EXITED - " + str(error), "FAIL")
     else:
         tprint("ALL TESTS PASSED", "OKGREEN")
     return
Exemplo n.º 11
0
 def all_alive(self):
     ok = True
     for i, p in enumerate(self.processes):
         if not p.is_alive():
             ok = False
             tprint(
                 "ERROR : " + self.processesnames[i] + "PROCESS IS DEAD...", "FAIL")
     if not ok:
         self.exit_test("DEAD PROCESS")
     return ok
Exemplo n.º 12
0
def carlingue1Ailes2():
    for i in range(nbAvions):
        SC.acquire()
        SA.acquire()
        SA.acquire()
        time.sleep(random.randint(0, 3))
        nbProduction["carlingue1Ailes2"] += 1
        tprint(
            'Un assemblage 1 carlingue avec 2 ailes est achevé ({})'.format(i +
                                                                            1))
        SA1.release()
Exemplo n.º 13
0
def carlingue1Ailes2Roues3():
    for i in range(nbAvions):
        SR.acquire()
        SR.acquire()
        SR.acquire()
        SA1.acquire()
        time.sleep(random.randint(0, 3))
        nbProduction["carlingue1Ailes2Roues3"] += 1
        tprint(
            'Un assemblage 1 carlingue et 2 ailes avec 3 roue est achevé ({})'.
            format(i + 1))
        SA2.release()
Exemplo n.º 14
0
 def _rpc(self, method, *args):
     data = {'id': self.id, 'method': method, 'params': args }
     request = json.dumps(data)
     self.client.write(request + '\n')
     self.client.flush()
     response = self.client.readline()
     self.id += 1
     result = json.loads(response)
     if result['error'] is not None:
         tprint(result['error'])
     # namedtuple doesn't work with unicode keys.
     return Result(id=result['id'], result=result['result'], error=result['error'],)
Exemplo n.º 15
0
def carlingue1Ailes2Roues3():
    for i in range(nbAvions):
        # A Compléter...
        carlingueAile.acquire()
        roues.acquire()
        roues.acquire()
        roues.acquire()
        time.sleep(random.randint(0, 3))
        nbProduction["carlingue1Ailes2Roues3"] += 1
        tprint(
            'Un assemblage 1 carlingue et 2 ailes avec 3 roue est achevé ({})'.
            format(i + 1))
        carlingueAileRoue.release()
Exemplo n.º 16
0
def test_prod_cons_avec_semaphores():

    # Fonction principales de création et de démarrage des threads
    nomsThreads = ["c1", "p1", "p2", "p3", "p4", "c2", "c3", "c4 "]
    threads = []

    for nomT in nomsThreads:
        if nomT[0] == 'p':
            thread_main = producteur
        else:
            thread_main = consommateur
        threads.append(
            threading.Thread(target=thread_main, name=nomT, args=(nomT, )))

    tprint("Debut du test")

    for t in threads:
        t.start()
        tprint("{name} demarre".format(name=t.name))

    for t in threads:
        t.join()
        tprint("{name} est terminé".format(name=t.name))

    tprint("Fin du test")
Exemplo n.º 17
0
def producteur(nom):

    element = nom[1:]

    Sp.acquire()
    S.acquire()
    # code en E.M. sur mutex
    tprint("        {nom} depose \"{element}\" dans le tampon...".format(
        nom=nom, element=element))
    tampon_lifo.tampon_deposer(tampon, element)
    tprint("        {nom} a fini de deposee \"{element}\" dans le tampon...".
           format(nom=nom, element=element))
    #tprint("        {nom} tampon = {tampon}".format(nom=nom, tampon=tampon.lifo))
    # fin d'E.M.
    Sc.release()
    S.release()
Exemplo n.º 18
0
def consommateur(nom):

    Sc.acquire()
    S.acquire()

    # code en E.M. sur mutex
    tprint("        {nom} retire un element du tampon...".format(nom=nom))
    element = tampon_lifo.tampon_retirer(tampon)
    tprint("        {nom} a fini de retirer \"{element}\" du tampon...".format(
        nom=nom, element=element))
    #tprint("        {nom} tampon = {tampon}".format(nom=nom, tampon=tampon.lifo))
    # fin d'E.M.
    Sp.release()
    S.release()

    return element
Exemplo n.º 19
0
def consommateur(nom):

    # A completer
    produits.acquire()
    mutex.acquire()
    # code en E.M. sur mutex
    tprint("        {nom} retire un element du tampon...".format(nom=nom))
    element = tampon_lifo.tampon_retirer(tampon)
    tprint("        {nom} a fini de retirer \"{element}\" du tampon...".format(
        nom=nom, element=element))
    #tprint("        {nom} tampon = {tampon}".format(nom=nom, tampon=tampon.lifo))
    # fin d'E.M.

    # A completer
    mutex.release()
    placeVide.release()

    return element
Exemplo n.º 20
0
def producteur(nom):

    element = nom[1:]

    # A completer
    placeVide.acquire()
    mutex.acquire()
    # code en E.M. sur mutex
    tprint("        {nom} depose \"{element}\" dans le tampon...".format(
        nom=nom, element=element))
    tampon_lifo.tampon_deposer(tampon, element)
    tprint("        {nom} a fini de deposee \"{element}\" dans le tampon...".
           format(nom=nom, element=element))
    #tprint("        {nom} tampon = {tampon}".format(nom=nom, tampon=tampon.lifo))
    # fin d'E.M.

    # A completer
    mutex.release()
    produits.release()
Exemplo n.º 21
0
    def __init__(self, yml_rules="", verbosity=0):

        self._p = p.tprint()
        self.verbosity = verbosity
        self.load_cfg()

        if yml_rules:
            self.rules = rulebook.RuleBook()
            self.rules.load_rules(yml_rules)
            #self.rules.print_rules()

        # TODO: If no module path, set it to git repository
        self.list_all_modules(self.cfg_module_root)
Exemplo n.º 22
0
 def __init__(self, addr=None):
     if addr is None:
         addr = HOST, PORT
     tprint("connect to addr: ", addr)
     self.conn = socket.create_connection(addr)
     tprint("create file pointer: ", self.conn)
     self.client = self.conn.makefile(mode='rw', encoding='utf-8')
     tprint("created file pointer: ", self.client)
     self.id = 0
Exemplo n.º 23
0
def test_moniteur_prod_cons():
    # Ressource Critique
    tailleMax = 5
    tampon = Tampon_fifo(tailleMax)
    moniteur = MoniteurProdCons(tampon)

    # Fonction principales des threads "producteurs"
    def producteur(nom, moniteur):
        element = nom[1:]
        moniteur_deposer(moniteur, nom, element)

    # Fonction principales des threads "consommateurs"
    def consommateur(nom, moniteur):
        elt = moniteur_retirer(moniteur, nom)

    # Fonction principales de création et de démarrage des threads
    nomsThreads = [
        "c1", "p1", "p2", "p3", "p4", "c2", "c3", "c4", "p5", "p6", "c5"
    ]
    threads = []

    for nomT in nomsThreads:
        if nomT[0] == 'p':
            thread_main = producteur
        else:
            thread_main = consommateur
        threads.append(
            threading.Thread(target=thread_main,
                             name=nomT,
                             args=(nomT, moniteur)))

    tprint("Debut du test")

    for t in threads:
        t.start()
        tprint("{name} demarre".format(name=t.name))

    for t in threads:
        t.join()
        tprint("{name} est terminé".format(name=t.name))

    tprint("Fin du test")
Exemplo n.º 24
0
def moniteur_retirer(moniteur, nom):
    tprint("{nom} debute moniteur_retirer".format(nom=nom))
    # a compléter: EM
    moniteur.mutex.acquire()

    # a compléter : attendre (=wait) si tampon vide (tampon_est_vide( moniteur.tampon )....)
    while (tampon_est_vide(moniteur.tampon)):
        moniteur.CC.wait()
    tprint("        {nom} retire un element du tampon...".format(nom=nom))
    element = tampon_retirer(moniteur.tampon)
    tprint("        {nom} a fini de retirer \"{element}\" du tampon".format(
        nom=nom, element=element))
    assert (not tampon_est_plein(moniteur.tampon))

    # a compléter : réveiller (=signal) un processus producteur endormi en attente de tampon plein
    moniteur.CP.notify()
    tprint("{nom} termine moniteur_retirer".format(nom=nom))
    # a compléter: EM
    moniteur.mutex.release()
    return element
Exemplo n.º 25
0
def moniteur_deposer(moniteur, nom, element):
    tprint("{nom} debute moniteur_deposer".format(nom=nom))
    # a compléter: EM
    moniteur.mutex.acquire()
    # a compléter : attendre (=wait) si tampon plein (tampon_est_plein( moniteur.tampon )....)
    while (tampon_est_plein(moniteur.tampon)):
        moniteur.CP.wait()
    tprint("        {nom} depose \"{element}\" dans le tampon...".format(
        nom=nom, element=element))
    tampon_deposer(moniteur.tampon, element)
    tprint(
        "        {nom} a fini de deposee \"{element}\" dans le tampon".format(
            nom=nom, element=element))
    assert (not tampon_est_vide(moniteur.tampon))

    # a compléter : réveiller (=signal) un processus consommateur endormi en attente de tampon vide
    moniteur.CC.notify()
    tprint("{nom} termine moniteur_deposer".format(nom=nom))
    # a compléter: EM
    moniteur.mutex.release()
Exemplo n.º 26
0
    tprint( 'T2 : dessine...')

    # restitution d'un jeton dans le semaphore crayon
    tprint( 'T2 : v(feuille)' )
    feuille.release()

    # restitution d'un jeton dans le semaphore feuille
    tprint( 'T2 : V(crayon})')
    crayon.release()




  
# Création des Thread
t1=threading.Thread(target=thread_T1)
t2=threading.Thread(target=thread_T2)

tprint('Debut du test')

# Démarrage des threads
for t in [t1,t2]:
    t.start()

# Attente de terminaison des threads
for t in [t1,t2]:
    t.join()

tprint('Fin du test')

Exemplo n.º 27
0
        input_dir = input('Enter folder path: ')
        if isinstance(input_dir, str):
            work_dir = input_dir
            break
        else:
            pass
    # work_dir = 'D:\\共享区'
    for parent, dirnames, filenames in os.walk(work_dir, followlinks=True):
        for filename in filenames:
            file_path = os.path.join(parent, filename)
            file_attr = stat(file_path)
            attr_list = [
                file_attr.st_mode, file_attr.st_uid, file_attr.st_gid,
                file_attr.st_size, file_attr.st_atime, file_attr.st_mtime,
                file_attr.st_ctime
            ]
            name, ext = os.path.splitext(filename)

            sql = '''INSERT OR IGNORE INTO `files` (name, ext, filename, dirpath, filepath, md5, sha1, mode,
                     uid, gid, size, astime, mstime, cstime, uptime, atime, mtime,  ctime, remark) 
                     VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}',{7},{8},{9},{10},
                     '{11}','{12}','{13}','{14}',{15},{16},{17},'{18}')'''.format(
                name, ext, filename, parent, file_path, get_md5(file_path),
                get_sha1(file_path),
                attr_list[0], attr_list[1], attr_list[2], attr_list[3],
                mts(attr_list[4]), mts(attr_list[5]), mts(attr_list[6]),
                currentTs(), attr_list[4], attr_list[5], attr_list[6], '')
            tprint('write_successfully', filename)
            sqlite.insert(sql)
            # print(attr_list)
Exemplo n.º 28
0
import socket
from _socket import SHUT_RDWR

class AndroidProxy(android.Android):
    def __init__(self, addr=None):
        android.Android.__init__(self, addr)

    def call(self, request):
        self.conn.sendall(request)
        response = self.conn.recv(10240)
        self.id += 1
        return response

droid = AndroidProxy()

tprint("Handshake is %s" % (android.HANDSHAKE))
tprint("Server host is %s" % (android.HOST))
tprint("Server port is %s" % (android.PORT))

addr = ("", 9999)

serverSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serverSock.bind(addr)
serverSock.listen(1)

while True:
    tprint("Connection waiting at %s" % (serverSock))
    sock, addr = serverSock.accept()
    tprint("Connection accepted %s" % (sock))

    while True:
def aile() :
    for i in range(nbAvionsPrevus*2):
        tprint( 'Une Aile est achevée ({})'.format(i+1))
        # A completer: deposer dans le tampon des ailes
        moniteur_deposer(usine.tamponAile,"aile","1")
Exemplo n.º 30
0
def thread_T2() :

    tprint( 'Debut du thread T2')

    time.sleep(random.randint(0, 3))
    
    # prise d'un jeton dans le semaphore crayon
    tprint( 'T2 : Demande P(feuille)' )
    feuille.acquire()
    tprint( 'T2 : Obtient P(feuille})')

    
    # prise d'un jeton dans le semaphore feuille
    tprint( 'T2 : Demande P(crayon})')
    crayon.acquire()
    tprint( 'T2 : Obtient P(crayon})')



    # Debut de section critique
    tprint( 'T2 : feuille et crayon obtenus')
    tprint( 'T2 : dessine...')

    # restitution d'un jeton dans le semaphore crayon
    tprint( 'T2 : v(feuille)' )
    feuille.release()

    # restitution d'un jeton dans le semaphore feuille
    tprint( 'T2 : V(crayon})')
    crayon.release()
def roue():
    for i in range(nbAvionsPrevus*3):
        tprint( 'Une roue est achevée ({})'.format(i+1))
        # A completer: deposer dans le tampon des roues
        moniteur_deposer(usine.tamponRoue,"roue","1")
Exemplo n.º 32
0
from tprint import tprint
import sys

tprint("Current platform is %s." % (sys.platform))

if sys.platform.startswith('linux-armv'):
    tprint("This device is android")
    from android import Android
else:
    tprint("This device is not android")

    import collections
    import json
    import socket

    PORT = 9999
    HOST = "127.0.0.1"
    Result = collections.namedtuple('Result', 'id,result,error')

    class Android(object):
        def __init__(self, addr=None):
            if addr is None:
                addr = HOST, PORT
            tprint("connect to addr: ", addr)
            self.conn = socket.create_connection(addr)
            tprint("create file pointer: ", self.conn)
            self.client = self.conn.makefile(mode='rw', encoding='utf-8')
            tprint("created file pointer: ", self.client)
            self.id = 0

        def _rpc(self, method, *args):
Exemplo n.º 33
0
 def __init__(self,db_path):
     self.conn = sqlite3.connect(db_path)
     tprint("Opened database successfully")
     self.curs = self.conn.cursor()
def moteur():
    for i in range(nbAvionsPrevus*2):
        tprint( 'Un moteur est achevé ({})'.format(i+1))
        # A completer: deposer dans le tampon des moteurs
        moniteur_deposer(usine.tamponMoteur,"moteur","1")