我有一个例子,应该展示我想做的事情
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功能来完成这项工作。
答案 0 :(得分:2)
如果要避免线程,一个选项是使用多个进程。如果您使用的是python 2.6,请查看multiprocessing模块。如果是python 2.5,请查看pyprocessing。
在多处理文档中注意“Process Pools”,它似乎可以满足您的要求:
可以创建一个进程池,它将执行使用Pool类提交给它的任务。
class multiprocessing.Pool([processes [,initializer [,initargs [,maxtasksperchild]]]])
一个进程池对象,它控制作业的工作进程池 可以提交。它通过超时和回调支持异步结果 并有一个并行的地图实现。