Code: Select all
import time
from threading import Thread
from multiprocessing import Process, Queue
class ProcessClasses:
def __init__(self, get_config_queue=None,):
self.get_config_queue = get_config_queue
self.get_config_queue_thread = Thread(target=self.get_config)
self.log_thread = Thread(target=self.log)
self.get_config_queue_thread.start()
# start this thread will stuck
#self.log_thread.start()
def get_config(self):
count = 0
while True:
self.get_config_queue.put(count)
print('get_config', count)
count += 1
def log(self):
#print('log')
pass
def debug():
queue = Queue(maxsize=1)
process = Process(target=ProcessClasses, args=(queue,))
process.start()
while True:
res = queue.get()
print('res', res)
print('qsize, full, empty', queue.qsize(), queue.full(), queue.empty())
time.sleep(.5)
debug_thread = Thread(target=debug)
debug_thread.start()
#debug_thread.join()
Wenn sie hängen bleibt und Sie sich die Druckanweisung ansehen, geben queue.full() und queue.empty() True zurück, was seltsam ist.
Ich vermute, dass es sich um ein Renn- oder Deadlock-Problem handelt.
Mobile version