基于函数

时间:2017-06-11 12:23:50

标签: python python-2.7

我想问一下,有没有选择在另一个进程中进行函数调用?例如:

def foo()
    while True:
        do_something...
#main function
def main()
    foo()
    some_other_actions...
    #end

我想让foo在其他进程中运行,但允许main()正常结束并允许用户在终端中写入任何其他内容,例如:

  • 用户在终端主编()
  • 中运行
  • 主要目标(foo功能仍然有效)
  • 用户可以在终端中运行任何其他内容(无需切换终端窗口)但foo功能仍可在其他进程中运行

我知道有一些答案,比如使用线程或多进程,但在使用它们之后,程序将不会停止,直到foo()函数结束。有没有选择在Python2.7中做出这样的事情?

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以使用multiprocessing模块执行此操作。如何实际实现整个事情有几种选择,最好的方法是创建进程池和作业队列。每当你得到一些需要执行的动作时,你就可以从运行main的进程中将它添加到作业队列中,并且池中的工作人员会将其提取出来。

该模块已有详细记录,因此您应该从multiprocessing的官方python文档中找到所需的一切。

关于如何在python here中启动孤立进程的问题,但是如果你想这样做,你真的想三思而后行。子进程是否保证保证结束?

你也可以做一些疯狂的事情,比如使用ZeroMQ作为执行工作的排队系统,但这可能超出了你在这里寻找的范围。可能是一个有趣的读物