Я пытаюсь заставить один поток изменить глобальную переменную, а затем другие потоки проверить эту глобальную переменную и, если она изменится, выполнить какое-то действие. Я прочитал многопоточность документации по python, но все это для меня очень ново, и я не уверен, какие варианты лучше всего подходят для того, что я пытаюсь сделать, или то, что я делаю, глупо, и есть лучший способ? Этот код не изменяет операторы цветной печати, как я и ожидал. (Кроме того, этот код должен быть в python 2.x для некоторых других модулей, которые я использую в своем реальном проекте.) ... возможно, мне следует использовать объект очереди.
import random
import sys
import threading
import time
# Globals
output = None
class Green(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
while True:
if output == 'green':
print 'green'
time.sleep(1)
class Red(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
while True:
if output == 'red':
print 'red'
time.sleep(1)
class Color_Randomizer(threading.Thread):
def __init__(self):
global output
threading.Thread.__init__(self)
def run(self):
while True:
colors = ['red', 'green']
output = random.choice(colors)
time.sleep(1)
def main():
green = Green()
red = Red()
color_randomizer = Color_Randomizer()
print 'Starting green'
green.start()
print 'Starting red'
red.start()
print 'Starting color randomizer'
color_randomizer.start()
if __name__ == "__main__":
main()
return output
- зачем ты это делаешь? - person user2357112 supports Monica   schedule 05.05.2015