Igorsk
Ноя. 26, 2015 20:23:35
Всем привет! подскажите пожалуйста как сделать многозадачность или как правильно сказать …
ну что бы одновременно делала несколько задач …
что нашел в интернете - “Параллельная многозадачность
threading - встроенный в python модуль для реализации многозадачности с помощью тредов (объекты языка, выполняющиеся в одном процессе). Минусы подхода в том, что вы не можете загрузить вычислениями более одного ядра.
multiprocessing - встроенный в python модуль для реализации многозадачности с помощью процессов
celery - навороченная реализация очереди задач, поддерживающая различные бэкенды для хранения этой самой очереди задач.
RQ - легковесная очередь задач, использующая redis”
полистав нихера не понял …(((
может у кого - нибудь имеется хотя бы приблизительный примерчиу…
alexsis
Ноя. 26, 2015 21:16:17
Марк Лутц. Программирование на Python, кажется в первом томе написано про многозадачность.
Igorsk
Ноя. 26, 2015 21:45:26
alexsis
кажется в первом томе написано про многозадачность.
ща посмотрю, спасибо!
Budulianin
Ноя. 26, 2015 23:33:26
alexsis
Марк Лутц. Программирование на Python, кажется в первом томе написано про многозадачность.
Там теория для джунов написана.
Igorsk
Всем привет! подскажите пожалуйста как сделать многозадачность или как правильно сказать …
Задачу свою опиши.
Iskatel
Ноя. 27, 2015 03:03:41
Igorsk
Кури threading, тебе за глаза хватит, остальное потом, если захочешь…
JOHN_16
Ноя. 27, 2015 04:23:54
Iskatel
Кури threading, тебе за глаза хватит, остальное потом, если захочешь…
как вы такое можете говорить не зная его задач? Если у него CPU нагруженные задачи, то с ним еще медленнее будет.
Igorsk
Ноя. 30, 2015 12:15:02
Budulianinмне нужно что бы одновременно работало запись видео -
[code python]import cv2
# find the webcam
capture = cv2.VideoCapture(0)
# video recorder
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
# record video
while (capture.isOpened()):
ret, frame = capture.read()
if ret:
out.write(frame)
cv2.imshow('Video Stream', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
capture.release()
video_writer.release()
cv2.destroyAllWindows()
[/code]
и запись звука -
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
примерно так ….
JOHN_16
Ноя. 30, 2015 13:15:29
Для начала попробуйте модуль threading, может его хватит - задача сделать два дополнительный потока в котором будет выполняться соответствующие функции. Примеров в интернете навалом, есть офиц.документация, есть книга Бизли “Python Подробный справочник”, где частично тоже самое но на русском. Если надо - разберетесь.
Igorsk
Ноя. 30, 2015 17:49:08
JOHN_16
Понял, большое спасибо!