Python多进程:从另一个脚本调用模块并传递变量
我有一个模块 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)