按队列执行函数
我有一个例子,想展示我想要做的事情。
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]]]])
这个进程池对象可以控制一组工作进程,任务可以提交给这些进程。它支持异步结果,带有超时和回调功能,并且有并行映射的实现。