Multiprocessing.Queue Steckt in einem Thread in einem anderen Prozess festPython

Python-Programme
Anonymous
 Multiprocessing.Queue Steckt in einem Thread in einem anderen Prozess fest

Post by Anonymous »

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()
Dieser Code wird normal ausgeführt. Aber wenn Sie den Protokollthread starten, kann die Warteschlange manchmal hängen bleiben.
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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post