2017-07-03 2 views
1

私はPythonが初めてで、写真をサーバーにアップロードするたびにスレッドを作成しようとしています。すべての手順がPythonで終了した後にスレッドを停止します

このコードは、Google Cloud Platformにgoogle.cloudライブラリを使用して写真をアップロードする必要があります。 私の問題は、ピケットカメラで1秒間に1フレームを送信したいということです。 スレッディングがないと、遅延が大きすぎます。下のコードでは毎秒ではなくカメラが新しいフレームを取得するたびに新しいスレッドを作成します。また、スレッドがすべての操作を完了した後、スレッドを「破棄」しません。これを理解するのを手伝ってもらえますか?私の英語と私の悪いコードに感謝と申し訳ありません。

if int(round(time.time() * 1000)) - oldtime > 1000 & serConn: 
      oldtime = time.time() 
      thread = Thread(target = upload, args = (stream.read(),)) 
      thread.start() 
      thread.join() 

アップロード機能:

def upload(img): 
    image = vision_client.image(content=img) 

    # Performs label detection on the image file 
    labels = image.detect_labels() 
    for label in labels: 
     if label.description == "signage": 
      ser.write("0") 
      print("Stop") 
     else: 
      ser.write("1") 

答えて

0

私はこの問題はjoin関数呼び出しであると思います。これにより、呼び出しブロックが停止し、スレッドが終了するのを待ちます。また、モジュールtimeを使用して、ショット間のメインスレッドをスリープすることをお勧めします。試してみよう:

import time 

while True: 
    if serConn: 
     thread = Thread(target = upload, args = (stream.read(),)) 
     thread.start() 
    time.sleep(1) 
関連する問題