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.
heftic
User
Beiträge: 22
Registriert: Mittwoch 21. September 2005, 13:09
Wohnort: Siegen

Thread sperren

Beitragvon heftic » Dienstag 13. Dezember 2005, 14:38

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

Beitragvon mr.hide » Dienstag 13. Dezember 2005, 15:02

Hat doch die Klasse Threading...

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

Oder?

mfg
Matthias
Gast

Beitragvon Gast » Dienstag 13. Dezember 2005, 15:04

Ja

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

Beitragvon heftic » Dienstag 13. Dezember 2005, 15:05

Sorry!

irgendwie wurde ich net angemeldet :shock:
mfg



heftic
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 13. Dezember 2005, 15:57

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 Modvoice
heftic
User
Beiträge: 22
Registriert: Mittwoch 21. September 2005, 13:09
Wohnort: Siegen

Beitragvon heftic » Mittwoch 14. Dezember 2005, 07:45

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

Beitragvon mr.hide » Mittwoch 14. Dezember 2005, 11:20

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

Beitragvon heftic » Mittwoch 14. Dezember 2005, 12:04

:?:

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

Beitragvon mr.hide » Mittwoch 14. Dezember 2005, 12:14

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 14. Dezember 2005, 14:55

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 Modvoice
heftic
User
Beiträge: 22
Registriert: Mittwoch 21. September 2005, 13:09
Wohnort: Siegen

Beitragvon heftic » Mittwoch 14. Dezember 2005, 15:06

Danke nochmal.

Habs mitlerweile auch soweit :D
mfg



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

Beitragvon mr.hide » Mittwoch 14. Dezember 2005, 15:09

Bei mir ist auch der Groschen gefallen :oops:

Wer ist online?

Mitglieder in diesem Forum: WhiteyW