4

Python 3がインストールされた組み込みシステム(buildrootベースのrootfsを実行する128MB RAMのarmv5tejl AT91SAM9X25)があります。私は数日間システムを稼働させたままにしています。私はPythonの開発作業を行うようになりましたが、新しいスレッドを作成する問題に遭遇しているようです。Pythonは新しいスレッドを開始できませんが、スレッドの限界を打つことはできません

私は次のプログラムを実行しようとした場合:あなたが見ることができるように

Type "help", "copyright", "credits" or "license" for more information. 
>>> import threading 
>>> import time 
>>> def func(): 
...  i = 0 
...  while True: 
...   i += 1 
...   print(i) 
...   time.sleep(1) 
... 
>>> 
>>> func() 
1 
2 
3 
^CTraceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 6, in func 
KeyboardInterrupt 
>>> t = threading.Thread(target=func) 
>>> t.start() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python3.4/threading.py", line 850, in start 
RuntimeError: can't start new thread 
>>> 

をスレッドを開始しようとすると、私は上記のエラーを取得します。いくつかの最初のオンライン検索では、システムがスレッドの限界に達していることが原因である可能性があります。 this methodを使用

# ulimit -a 
core file size   (blocks, -c) 0 
data seg size   (kbytes, -d) unlimited 
scheduling priority    (-e) 0 
file size    (blocks, -f) unlimited 
pending signals     (-i) 961 
max locked memory  (kbytes, -l) 64 
max memory size   (kbytes, -m) unlimited 
open files      (-n) 1024 
pipe size   (512 bytes, -p) 8 
POSIX message queues  (bytes, -q) 819200 
real-time priority    (-r) 0 
stack size    (kbytes, -s) 8192 
cpu time    (seconds, -t) unlimited 
max user processes    (-u) 961 
virtual memory   (kbytes, -v) unlimited 
file locks      (-x) unlimited 

は、私のシステム上のスレッドの合計数は75である、方法ここで961の限界以下である私の現在のメモリのステータス:

# free -m 
      total  used  free  shared buffers  cached 
Mem:   120  118   2   60   0   65 
-/+ buffers/cache:   52   67 
Swap:   0   0   0 
ここではulimit -aの出力であります

echo 1 > /proc/sys/vm/compact_memoryを実行してメモリコンパクタも実行しました。

デバイスをリブートすると(コードは動作しているコードなので)すべてうまくいくと思いますが、私は現在この状態のデバイスを持っているので、問題の内容を理解しようとしています。 。

答えて

1

Pythonの実装でスレッドが有効になっていないことがあります。これは開発者にとってより面倒な分野の1つです。誰がPythonを提供したのですか?

+0

私はスレッドを使用するユニットにPythonソフトウェアを書いているので、スレッドが確実に有効になっています。インタプリタがスレッドを作成できないため、そのソフトウェアを実行するのが失敗しただけです。 –

+0

OPがこれまでにこの問題を解決したのだろうか? – holdenweb

関連する問題