Переменная self
(первый аргумент метода класса - вы можете использовать для него любое имя) предназначена для ссылки на класс экземпляр (также называемый объектом). Вы используете self там, где self не определено, прямо в классе, где конкретный объект еще не известен.
Когда выполняется код queueLock = threading.lock () ... и т. Д., Вы находитесь не в объекте класса (экземпляре), а в контексте класса, поэтому ваша блокировка будет одинаковой для всех объектов учебный класс.
О send_queue
, он определен и известен всем объектам через класс, поэтому вам не нужно использовать self.
для доступа к нему.
Если вы хотите, чтобы какой-то код выполнялся при создании экземпляра, укажите его в __init__
.
class main(threading.Thread):
def __init__(self):
self.queueLock = threading.Lock()
.. some code ...
send_queue("EppQueue","sss")
send_queue("CrQueue","ssds")