Потоки Raspberry Pi Model B. Запустить 2 скрипта Python одновременно

Я надеюсь, что вы можете помочь (как всегда). Я делаю фотобудку и, короче говоря, у меня есть скрипт Python для управления светом (включается на 30 секунд) и еще один, чтобы сделать 4 фотографии для фотобудки. Мне нужно запустить сценарий освещения, а затем сценарий камеры через 5 секунд. Я уверен, что это легко, но не могу решить это. Вот что я пробовал:

Я даже не уверен, что это правильно для Raspberry Pi, но это то, что я пробовал, вкл. вариации:

import threading
import time
def light():
    while time.time() <= start_time:
        pass
    threading.Thread(target="sudo python /home/pi/python/light30.py").start()
def camera():
    while time.time() <= start_time:
        pass
    threading.Thread(target="sudo python /home/pi/python/camtest.py").start()
start_time=time.time()+5
threading.Thread(target=light).start()
threading.Thread(target=camera).start()

Любая помощь, которую вы можете предоставить, была бы отличной, так как я уверен, что я идиот.


person user1721451    schedule 20.07.2015    source источник
comment
Thread целевой аргумент должен быть вызываемым объектом, а не строкой.   -  person Łukasz Rogalski    schedule 20.07.2015
comment
Хотел бы я иметь такие знания, как ты, Лукаш. Как бы я это сделал - я родственник n00b   -  person user1721451    schedule 20.07.2015
comment
зачем вам запускать скрипты с помощью sudo?   -  person Padraic Cunningham    schedule 20.07.2015


Ответы (1)


как упоминалось в комментариях, потоки ожидают запуска кода python... а не файла python... вы можете просто использовать подпроцесс для выполнения того, что хотите

import subprocess
import time

lights_proc = subprocess.Popen(["/usr/bin/python","/home/pi/python/light30.py"])
time.sleep(5) # sleep for 5 seconds
print subprocess.Popen(["/usr/bin/python","/home/pi/python/camtest.py"],stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()

вызов сообщения в конце просто блокирует его и ждет завершения camtest.py перед выходом из этого скрипта (а также получения вывода из скрипта)

person Joran Beasley    schedule 20.07.2015
comment
Большое спасибо, Джоран, это то, что я не мог понять. - person user1721451; 20.07.2015