Python多进程:从另一个脚本调用模块并传递变量

1 投票
1 回答
3096 浏览
提问于 2025-04-26 18:26

我有一个模块 multy.py,里面有一个使用多进程的简单示例。

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    pool = Pool(processes=4)
    result = pool.apply_async(f, [10])
    print result.get(timeout=1) 
    print pool.map(f, range(1000))

在另一个脚本 start.py 中,我想调用这个模块,并用不同的值去执行,目标是和1000进行比较。

我该怎么做才能正确地用新的参数来运行它呢?

我尝试过用 import multy 来导入这个模块,然后用 os.system('multy.py') 来运行,同时传递变量,但没有成功。

有没有什么好的想法?

暂无标签

1 个回答

3

通常,我们在 if __name__ == '__main__' 这个地方写代码,是为了进行自我测试。
在你的情况下,我建议你把相关的代码写成一个函数,像这样:

from multiprocessing import Pool

def f(x):
    return x*x
def func(num):
    pool = Pool(processes=4)
    result = pool.apply_async(f, [10])
    print result.get(timeout=1) 
    print pool.map(f, range(num))

if __name__ == '__main__':
    func(1000)

这样的话,你就可以在另一个文件中导入 multy,然后调用 func(yournum)。这样会让你的代码更容易阅读。就像这样:

test.py:

if __name__ == '__main__':
    import multy
    multy.func(2)

撰写回答