глобальные блокировки, препятствующие выполнению остальной части моего кода, несмотря на отсутствие других потоков - PullRequest
0 голосов
/ 08 октября 2018
def addUser_InHash(username, password, clearanceLvl):
    print("Adding user in hash")
    hashID = 0
    hashString = username + password
    hashIncIndex = 0  # This is used to increment "hashIncrement"
    added = False
    for i in hashString:
        hashID += ord(i)
    hashID = hashID % hashKey
    print(hashID, "hashID in addUser")
    try:
        with open("LoginHashTable.pickle", "rb") as file:
            saved_data = pickle.load(file)
            print("Original")
            print(saved_data)

    except:
        saved_data = {}
    print("File opened")


    while not added:
    # Make this so that it can check for unique usernames, using AND statements, and two variables
        if hashID in saved_data:
            print()
            if hashID == (hashKey - 1):
                hashID = 0
            else:
                hashID += hashIncrement[hashIncIndex]

            if hashIncIndex != 3:
                hashIncIndex += 1  # Increments hashIncrement
            else:
                hashIncIndex = 0
        else:
            print("User doesnt exist, adding to hash table")
            saved_data[hashID] = [username, password]
            print("New Added")
            print(saved_data)
            added = True
    print("Saving updated file addUser_InHash")
    with global_lock:
        print("past global lock")
        with open("LoginHashTable.pickle", "wb") as file:
            pickle.dump(saved_data, file)
            print(saved_data)
            print("Data saved")

Этот код Python останавливается на части "with global_lock" по какой-то странной причине.глобальная блокировка определяется как

global_lock = Lock()

, а мои потоки определяются как

connThread = Thread(target=handler, args=(conn, addr))

, это вызывается другой функцией и должно завершаться так, чтобы Мой клиент (связывался с сервером с этим кодомнаходится в) может продолжить. На данный момент не запущены другие потоки, так как я перезагружаю сервер каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...