Thread sperren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
heftic
User
Beiträge: 22
Registriert: Mittwoch 21. September 2005, 13:09
Wohnort: Siegen

Hallo!

Ich suche nach einer einfachen möglichkeit einen Thread zu sperren.
Sowas wie Lock in Java.

Hintergrund ist:
Ich lasse einen Server immer nach einer gewissen Zeit mehrere RemotePC's scannen (welcher User sich darauf befindet oder welcher PC frei ist)
Dieser Server gibt dann bei einer Anfrage eines Clients die erste freie WorkstationIP an diesen Client zurück.
Problem dabei ist dass der ScanThread nicht ausgelöst werden darf während ein Client eine Anfrage stellt.

Ich hoffe ihr könnt mir helfen.
mfg

heftic
mr.hide
User
Beiträge: 108
Registriert: Montag 29. August 2005, 14:02

Hat doch die Klasse Threading...

http://python.org/doc/2.3.3/lib/module-threading.html

Oder?

mfg
Matthias
Gast

Ja

Hätte aber gerne mal nen kleines Beispiel.
heftic
User
Beiträge: 22
Registriert: Mittwoch 21. September 2005, 13:09
Wohnort: Siegen

Sorry!

irgendwie wurde ich net angemeldet :shock:
mfg

heftic
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ein Beispiel.. hmm, blackbird hat mal sowas fürs Wiki geschrieben. Vielleicht hilft dir das. Alternativ auch die Forensuche bemühen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
heftic
User
Beiträge: 22
Registriert: Mittwoch 21. September 2005, 13:09
Wohnort: Siegen

Jo danke.

Aber über die Forensuche habe ich leider nichts entsprechendes gefunden.
mfg

heftic
mr.hide
User
Beiträge: 108
Registriert: Montag 29. August 2005, 14:02

Hab das jetzt auch mal probiert aber irgendwie steh ich da auch auf dem Schlauch.

Ich habe folgendes:

Code: Alles auswählen

import threading
import time


class OwnThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        print "Thread gestartet"
        while (True):
            print "ich laufe noch"
            time.sleep(0.5)
    

t = OwnThread()
t.start()

lock = t.Lock()

lock.acquire()

Trotzdem sieht meine Ausgabe noch so aus:

Code: Alles auswählen

ich laufe noch
ich laufe noch
ich laufe noch
ich laufe noch

usw.

An was kann das liegen ??


Grüße
Matthias
heftic
User
Beiträge: 22
Registriert: Mittwoch 21. September 2005, 13:09
Wohnort: Siegen

:?:

Mit einem einzigen Thread brauchst du doch kein Lock oder?

Außerdem: Gehört das acquire nicht vor die Ausgabe?
mfg

heftic
mr.hide
User
Beiträge: 108
Registriert: Montag 29. August 2005, 14:02

Ist ja nur zum testen.


aber es sind doch 2 , das Hauptprogramm und der Thread sind ja 2...

Ich hab das t.start() mal ans Ende gesetzt bringt aber auch nichts...


Komisch
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich hätte ein Beispiel:

Code: Alles auswählen

#!/usr/bin/python
# -*- encoding: latin-1 -*-

import threading, time

class OwnThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.lock = threading.Lock()
    
    def run(self):
        self.lock.acquire()
        print "Thread gestartet"
        for x in range(10):
            print "ich laufe noch"
            time.sleep(0.5)
        self.lock.release()

t = OwnThread()
t.start()
Naja, das Lock ist im beispiel zwar vollkommen unnötig, aber es funktioniert zumindest.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
heftic
User
Beiträge: 22
Registriert: Mittwoch 21. September 2005, 13:09
Wohnort: Siegen

Danke nochmal.

Habs mitlerweile auch soweit :D
mfg

heftic
mr.hide
User
Beiträge: 108
Registriert: Montag 29. August 2005, 14:02

Bei mir ist auch der Groschen gefallen :oops:
Antworten