2016-12-16 2 views
1

としてプロットを保存するとき、長いCに変換するには大きすぎるint型私も、私はplt.savefigを使用してプロットを保存しようとすると、私はこのエラーを取得ラズベリーPI 1.上のpythonを使用してプログラミングをしていますプロットの内容が単一の値である場合。私はTkinterをメインの執行主体で実行していますが、別の.pyファイルで関数を呼び出すことによって計算を行う別個のスレッドがあり、plt.savefigはこれらの関数の1つです。 plt.savefigは、2番目の.pyファイルを直接呼び出すときにうまく動作するので、これは私のスレッディングと関係がありますか?スレッドをご覧くださいPythonの:OverflowErrorを:Pythonは画像

import threading 
import time 
import matplotlib.pyplot as plt 
def saveplot(): 
    plt.plot(3) 
    plt.savefig("plot.jpg") 
    time.sleep(10) 

threads = [] 
t = threading.Thread(target=saveplot) 
threads.append(t) 
t.start() 

Traceback (most recent call last): 
    File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner 
    self.run() 
    File "/usr/lib/python2.7/threading.py", line 763, in run 
    self.__target(*self.__args, **self.__kwargs) 
    File "Slett.py", line 6, in saveplot 
    plt.savefig("plot.jpg") 
    File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 578, in savefig 
    draw() # need this if 'transparent=True' to reset colors 
    File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 571, in draw 
    get_current_fig_manager().canvas.draw() 
    File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_tkagg.py", line 350, in draw 
    tkagg.blit(self._tkphoto, self.renderer._renderer, colormode=2) 
    File "/usr/lib/python2.7/dist-packages/matplotlib/backends/tkagg.py", line 21, in blit 
    _tkagg.tkinit(tk.interpaddr(), 1) 
OverflowError: Python int too large to convert to C long 
+0

にあなたがしようとしている、単一の数のバグである私の知識は、私はいくつかの助けを本当に感謝:(

編集を、一種の限られていますあなたの数値が負で、 - (2^63)より小さい。 – Kevin

+1

@ケビン私は '2^63 - 1と思っています。 63-1'は64ビットシステムのみであり、プラットフォームに関係なく最大値は 'sys.maxsize'だと私は信じている。 –

+0

@ TadhgMcDonald-Jense n:これは 'ssize_t'のためのものです。通常は' long'と同じではありません(Windowsは良い反例です。それは32ビットの長さと64ビットのポインタを持っています)。 – Kevin

答えて