按队列执行函数

1 投票
1 回答
1150 浏览
提问于 2025-04-16 01:28

我有一个例子,想展示我想要做的事情。

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

那么,有没有办法做到这一点而不使用线程呢?

我的意思是,是否有一些glib的函数可以完成这个工作。

1 个回答

2

如果你想避免使用线程,一个选择是使用多个进程。如果你在用 Python 2.6,可以看看 multiprocessing 这个模块。如果你在用 Python 2.5,可以看看 pyprocessing

注意文档中的 "进程池",它似乎能满足你的需求:

你可以创建一个进程池,这个池子里的进程会执行提交给它的任务,使用的是 Pool 类。

class multiprocessing.Pool([processes[, initializer[, initargs[, maxtasksperchild]]]])

这个进程池对象可以控制一组工作进程,任务可以提交给这些进程。它支持异步结果,带有超时回调功能,并且有并行映射的实现。

撰写回答