@Papp Nase: Mir ist absolut ncht klar, wozu du da Threads brauchst:
Code: Alles auswählen
import itertools
import random
true_or_false = iter(lambda: random.choice((True, False)), None)
class StoppableIterator:
def __init__(self, iterable):
self.running = iterable
self.stopped = False
self.current = None
def stop(self):
if self.stopped:
return
self.stopped = True
self.current = next(self.running)
def resume(self):
if not self.stopped:
return
self.stopped = False
self.current = None
def __iter__(self):
while True:
if self.stopped:
yield self.current
else:
yield next(self.running)
stopiter = StoppableIterator(true_or_false)
for i, each in zip(range(7), stopiter):
print i, each
stopiter.stop()
for i, each in zip(range(7), stopiter):
print i, each
stopiter.resume()
for i, each in zip(range(7), stopiter):
print i, each
Ergebnis:
Code: Alles auswählen
0 True
1 True
2 False
3 True
4 True
5 False
6 True
0 True
1 True
2 True
3 True
4 True
5 True
6 True
0 False
1 False
2 False
3 False
4 False
5 True
6 True
Wenn es dir darum geht, mit threading herumzuspielen um herauszukriegen, wie das funktioniert, dann empfehle ich das Buch "Concurrent Programming in Java, 2nd Ed." von Doug Lea. Es ist zwar für Java, aber Pythons threading.Thread ist den Java-Threads nachempfunden, weswegen man den Java-Code aus dem Buch leicht nach Python übertragen kann, selbst wenn man nicht soviel von Java versteht.
Multithreading ist ein schwieriges Thema, das man durch reines Ausprobieren nicht zu durchdringen lernt. Da braucht man eine Anleitung, sonst baut man entweder Sachen, die überhaupt nicht funktionieren, oder man erfindet andauernd Dinge, die andere schon besser implementiert haben.
In specifications, Murphy's Law supersedes Ohm's.