小编典典

是否可以在子进程中运行功能而无需线程化或编写单独的文件/脚本。

python

import subprocess

def my_function(x):
    return x + 100

output = subprocess.Popen(my_function, 1) #I would like to pass the function object and its arguments
print output 
#desired output: 101

我只找到有关使用单独的脚本打开子流程的文档。有谁知道如何传递函数对象甚至是传递函数代码的简便方法?


阅读 209

收藏
2020-12-20

共1个答案

小编典典

我认为您正在寻找更类似于多处理模块的内容:

http://docs.python.org/library/multiprocessing.html#the-process-
class

子流程模块用于生成流程并使用其输入/输出执行操作-不适用于运行功能。

这是multiprocessing您的代码的版本:

from multiprocessing import Process, Queue

def my_function(q, x):
    q.put(x + 100)

if __name__ == '__main__':
    queue = Queue()
    p = Process(target=my_function, args=(queue, 1))
    p.start()
    p.join() # this blocks until the process terminates
    result = queue.get()
    print result
2020-12-20