2016-07-01 26 views
0

私はPython3.5で外部ソースからストリーミングデータを記録しようとしています。私が行うときには、次の現在の実行を停止せずにPythonを一時停止するメソッド/関数はありますか?

ストリーミング機能が有効になることが表示されます
enable_streaming() 
time.sleep(10) 
stop_streaming() 

は、Pythonが10秒間停止し、その後、停止しているストリーミング。おそらく、time.sleepの機能のためにPythonが10秒間停止するため、実際にストリーミングデータは記録されません。私はデータへのフローを追跡するためにwiresharkを使いました。宛先がenable_streaming()が受信されたことを認識しているようです。

Enable_streaming()は、dllから呼び出される関数です。 dllはmatlabで動作するので、pythonのtime.sleep()がここで問題になると思います。 私はdllのソースコードにアクセスすることはできませんが、Matlabで動作しているため、単純なreturn ctypes関数なので、ここで問題はないと思います。

ストリーミングを有効に呼び出すPythonのコードは次のとおりです。

import ctypes as ct 
shim = ct.cdll.LoadLibrary('PCdll') 

def enable_streaming() 
    f = shim.enable_streaming 
    f.restype = ct.c_int #return is int 
    result = f() 

だから私の質問です:一時停止しますが、time.sleepのように「現在のスレッドの実行を一時停止」しないのpythonでのコマンドのいくつかの並べ替えがあります()はしますか?

成功しないと試みました。

import time 
start = time.time() 

enable_streaming() 
while (time.time() - start < 10): # 10 seconds 
    pass # loop for 10 seconds 

stop_streaming() 
+0

はい。スリーピングブロックpython。スレッドでストリーミングを行う必要があります。 – Falmarri

+0

これは 'enable_streaming'がどのようなもので、どのように動作するかに依存します。それが自分のスレッドで動作していた場合、 'time.sleep'が働いていたはずです。スレッド内にある場合は、実際にこの機能を操作するために何かが必要です。あなたは単に "停止せずに休止する"ことはできません。 – user2357112

+0

あなたは何をしようとしていますか? – TheBlackCat

答えて

4

私はそれがスレッドなしで何でもできるストリーミングのように思われないよう、これは、それを修正するかどうかわからないんだけど、これは私が通常何をすべきかです:これは問題ではないように思えます私はブロックすることなく一定の期間何かをする必要があるとき。

import time 

start = time.time() 

while (time.time() - start < 10): # 10 seconds 
    # loop for 10 seconds 
+0

これは私の問題を解決していませんでしたが、それはそのtime.sleepからルールをしたと思うStackOverflowの上でブロックダイアグラムを投稿することができない問題でした。ありがとうございました – toshbar

関連する問題