blog.fuktommy.com

Pythonのスレッド上限

朔のアクセスがとんでもないことになっているらしい」の件で、 「マルチスレッドが楽しい」で解決できたんですけど、 Pythonのスレッドっていくつくらい作れるのかなと思ってやってみました。 たぶん環境依存なんだろうな。

#!/usr/bin/python
from time import sleep
from threading import Thread
for i in range(1000):
    print i
    t = Thread(target = lambda: sleep(120))
    t.setDaemon(True)
    t.start()

まずFedoraCode6+Python2.4の場合。 こんな感じで子スレッドは303個まで作れました。

301
302
303
Traceback (most recent call last):
  File "./threadtest.py", line 8, in ?
    t.start()
  File "/usr/lib/python2.4/threading.py", line 416, in start
    _start_new_thread(self.__bootstrap, ())
thread.error: can't start new thread

Unhandled exception in thread started by
Error in sys.excepthook:

Original exception was:

Cygwin+Python2.5の場合は817個までで、 Windows+Python2.5の場合は999個まで行けました。

エラーが出たときは概算ですけど、 6レス×10ノード×5スレだと思えば300個の更新通知が来たわけで、 こりゃ確かにスレッドの上限に達してもおかしくないなあ、と思いました。

Copyright© 1998-2014 Fuktommy. All Rights Reserved.
webmaster@fuktommy.com (Legal Notices)