Вы можете использовать queue.Queue
для связи между потоками.Есть простой пример двух потоков.Одна нить кладет предметы на одну сторону queue
, а другая забирает их.queue
может также использоваться для многопользовательского многопользовательского приложения (но перед реализацией плана, как оно должно работать).
from queue import Queue
from random import randint
import threading
import time
class Producer(threading.Thread):
def __init__(self, queue):
super(Producer, self).__init__()
self.queue = queue
def run(self):
while True:
thread_name = self.name
if not self.queue.full():
print('Will send "{}"'.format(thread_name))
self.queue.put(thread_name)
time.sleep(randint(1, 3))
class Consumer(threading.Thread):
def __init__(self, queue):
super(Consumer, self).__init__()
self.queue = queue
def run(self):
while True:
if not self.queue.empty():
received = self.queue.get()
print('Received "{}"'.format(received))
time.sleep(randint(1, 3))
if __name__ == '__main__':
q = Queue()
a = Producer(queue=q)
b = Consumer(queue=q)
a.start()
b.start()
a.join()
b.join()
sleeps
только для его замедления для демонстрации.Есть документация для Очередь
Примечание: поток не совпадает с процессом.Будьте осторожны с терминологией, которую вы можете неправильно понять.