【发布时间】:2016-04-05 11:43:47
【问题描述】:
我正在尝试加速一个 Python 程序,我说有一个线程总是在运行,它扫描来自外部资源的输入,当它得到一些东西时,它会调用另一个函数来解析输入数据和返回一个可以理解的信息(解析函数也使用其他函数)。
scanning() 函数的简单模型
def scanning(x):
alpha = GetSomething(x)
if alpha != 0:
print Parsing(alpha)
所以我的想法是把这个线程转换成一个与主进程并行运行的进程,当它得到一些东西时,它会使用一个队列将它发送到主进程,然后主进程应该调用解析函数。
我的问题是:是否可以保持scanning()函数原样并在进程中使用它(即使它调用其他函数)?
如果不是,为了方便与multiprocessing 模块一起使用,需要对scanning() 函数的结构进行哪些修改?
在 Python 中多处理调用其他函数的函数的正确方法是什么?
【问题讨论】:
-
我猜这就像你说的:一个线程填充队列,一些线程扫描队列中的任何内容
-
如果输入比扫描部分更快,则上述选项是可行的
-
@Whitefret 我正在尝试用多处理替换线程,但我想知道这样做的正确方法是什么,因为
scanning()中有很多函数调用,如果可以的话,我将不胜感激帮助 -
我不明白你为什么要使用多处理,除非你想同时使用多台机器。在那种情况下,我不知道在普通 python 中这样做的方法,但是你可以在 C 中使用 MPI,在 java 中使用 RMI,甚至为什么不使用 Map/Reduce
-
@Whitefret 扫描线程一直在运行,所以我想从多处理中获利,这样它就可以在与主程序不同的单独内核上运行
标签: python python-2.7 multiprocessing