Как запустить максимально возможное количество потоков на вашем компьютере - PullRequest
0 голосов
/ 08 ноября 2019

Как запустить максимально возможное количество потоков на вашем компьютере? Я хочу запустить максимальное количество потоков в моем коде Python. Я запускаю код на компьютере с Windows.

Я подумал о следующем решении:

x = 0
while 1:
    try:
        t = Thread(target=learn, args=(line,)) #writer,))
        thread_list.append(t)
        t.start()
        break
    except Exception as exp:
        time.sleep(1)
        if x == 0:
            print "Waiting for free thread",
            x = 1
        else:
            print ".",

Код работал нормально, но через несколько минут я получил следующую ошибку:

mutex.acquire() #error
with open("output.csv", "ab") as dataset_file:
    writer = csv.writer(dataset_file)
    writer.writerow(dataset)
mutex.release()

mutex.acquire()
AttributeError: 'NoneType' object has no attribute 'acquire'

У кого-нибудь есть способ исправить мою ошибку или другой способ открыть максимальное количество потоков? спасибо.

1 Ответ

1 голос
/ 08 ноября 2019

Максимальное количество потоков, которые вы можете запустить в Windows, зависит от того, сколько у вас памяти. Каждый поток в Windows по умолчанию использует 1 МБ ОЗУ для стека (плюс еще немного для его контекста и крошечный стек в режиме ядра). Для 32-разрядного приложения максимальное количество потоков, которое вы можете создать, составляет около ~ 1800, при условии, что вы не выделяете никакой другой памяти. Другими словами, сколько потоков вы можете создать, сводится к тому, сколько свободной памяти у вашего приложения.

Но вы не должны создавать слишком много потоков. Обычно вы должны стремиться иметь столько потоков, сколько доступно ядер. Создание потоков стоит дорого, переключение между потоками - тоже.

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