Мне было интересно, есть ли лучший способ справиться с блокировками при импорте других модулей. Сейчас у меня есть это ...Пропускание замков в python
import ot1, ot2, ot3
class Thread(threading.Thread):
def __init___(blah, blah):
def run(self):
data, my_lock = self.data, self.my_lock
return ot1.dostuff(data, my_lock) + ot2.dostuff(data, my_lock) + ot3.dostuff(data, my_lock)
if __name__ == '__main__':
my_lock = threading.Lock()
for x in range(10):
Thread(data, my_lock)
Потому что я импортировать вещи, которые я должен передать замок в новых областях, есть ли способ обойти эту проблему, как глобально объявить замок. Это сделает мой код намного чище.
Функции 'dostuff' обеспечивают доступ к нескольким членам данных из вашего класса потоков (' data' и 'my_lock'). Имеет ли смысл, чтобы они были методами самого класса? –
Не в этом случае, он становится довольно сложным в фоновом режиме, dostuff вызывает другие функции из других файлов. Если я поставлю все один файл, это будет несколько тысяч строк слишком долго. –
Я думаю, было бы очень интересно узнать, почему ** блокировки используются в первую очередь. Не могли бы вы еще раз объяснить свой вариант использования? – dnozay