2016-10-02 21 views
0

私はLinuxマシンに2台のアンドロイドデバイスを接続しており、同時に両方のスクリーンショットを撮る必要があります。どのように私はこれをPythonで達成することができますか?Python:複数のコマンドを同時に実行

import time, datetime 
from threading import Thread 
from Queue import Queue 

def get_screenshot(deviceid): 
    print deviceid 
    print datetime.datetime.now() 
    # Logic to get screenshot goes here 

deviceids = ["blabla1", "blabla2"] 

q = Queue() 

for d in deviceids: 
    t = Thread(target=get_screenshot, args=(d,)) 
    t.setDaemon(True) 
    t.start() 

for d in deviceids: 
    q.put(d) 

q.join() 

出力は次のようになります: これは私がこれまで持っているものである

blabla1 
2016-10-02 12:55:17.146964 
blabla2 
2016-10-02 12:55:17.147141 

問題がある: 1.アプローチは正しいですか? 2. 1msの違いはなぜですか?それは避けられますか? 3.このプログラムは終了しません。 Ctrl + Zが必要です。

+0

違いは177ミリ秒で、それほど多くはありません。 – njzk2

答えて

0
import datetime 
from threading import Thread 

def get_screenshot(deviceid): 
    print("%s %s" %(deviceid, datetime.datetime.now())) 

deviceids = ["blabla1", "blabla2"] 

for d in deviceids: 
    t = Thread(target=get_screenshot, args=(d,)) 
    t.start() 
  1. あなたはキューを必要としません。
  2. スレッドの作成と起動で0.2 msが無駄になりました。
  3. これは、文字列をキューに入れてそのキューに結合するためです。キューは文字列を待ち、ハングします。本当にあなたのスレッドに参加する必要がありますか?スクリーンショットをスレッド関数内のファイルに書き込むことができます。 Pythonプログラムは、すべてのスレッドが終了すると自動的に閉じます。
関連する問題