У меня есть пример, который должен показать, что я хотел бы сделать
queue = 2
def function():
print 'abcd'
time.sleep(3)
def exec_times(times):
#do something
function()
def exec_queue(queue):
#do something
function()
exec_times(3)
#things need be working while it waiting for the function finish
time.sleep(10)
результат должен быть
abcd
abcd
#after finish the first two function executions
abcd
Итак, есть ли способ сделать это без использования trhead?
Я имею в виду некоторую функцию glib для выполнения этой задачи.
Если вы хотите избежать потоков, одним из вариантов является использование нескольких процессов. Если вы находитесь на python 2.6, взгляните на модуль multiprocessing. Если python 2.5, посмотрите pyprocessing.
Обратите внимание на "Пулы процессов" в документах для многопроцессорности, которые, как представляется, отвечают вашим требованиям:
Можно создать пул процессов, которые будут выполнять задачи, переданные ему с классом пула.
класс multiprocessing.Pool([процессы [, initializer [, initargs [, maxtasksperchild]]]])
Объект пула процессов, который управляет пулом рабочих процессов, к которым выполняются задания могут быть представлены. Он поддерживает асинхронные результаты с таймаутами и обратными вызовами и имеет реализацию параллельной карты.