2013-03-06 2 views
0

В принципе, я не знаю, что мне нужно сделать для достижения этой цели ..Несколько петель для предопределенных сумм в Python

У меня есть две петли, которые будут петли для различных длительностей каждого:

import time 

while True: 
    print "Hello Matt" 
    time.sleep(5) 

и то другой цикл:

import time 

while True: 
    print "Hello world" 
    time.sleep(1) 

мне нужно включить обе петли в программе и оба должны работать одновременно и независимо друг от друга данных процесса, и нет необходимости для обмена данными между ними. Я думаю, что я ищу Threads или Multiprocessing, но я не уверен, как реализовать его для чего-то подобного.

+1

Посмотрите на примеры (второй): http://docs.python.org/2/library/multiprocessing.html#examples – Blender

ответ

1

Использование Thread достаточно для вашей цели:

import time 
from threading import Thread 

def foo(): 
    while True: 
     print "Hello Matt" 
     time.sleep(5) 

def bar(): 
    while True: 
     print "Hello world" 
     time.sleep(1) 

a = Thread(target=foo) 
b = Thread(target=bar) 
a.start() 
b.start() 
+0

Очень удивительный, и очень действительные ответы. Идти с этим, потому что кажется намного чище. Вопрос .. есть ли какой-либо вред в консолидации последних четырех строк на две, добавив '.start()' в конец двух потоков над ними? – Matthew

+0

@Matthew Рад, что это помогло. Нет проблем с вызовом 'start()' напрямую, если вам не нужна ссылка на объект (например, если вы не собираетесь использовать другой метод). Для вашего примера это вполне допустимо. –

+0

Я вижу, что вы '.start()' поток. Есть ли необходимость в '.stop()' потоке? Вывоз мусора? – Matthew

1

Для этого вы можете использовать модуль нарезание резьбы, например:

import threading 
import time 

def f(n, str):  # define a function with the arguments n and str 
    while True: 
     print str 
     time.sleep(n) 

t1=threading.Thread(target=f, args=(1, "Hello world")) # create the 1st thread 
t1.start()            # start it 

t2=threading.Thread(target=f, args=(5, "Hello Matt"))  # create the 2nd thread 
t2.start()            # start it 

реф.
http://docs.python.org/2/library/threading.html

Смежные вопросы