Python:可以生成函数或方法吗?
我想知道是否有可能使用subprocess模块生成多个进程,以运行在同一脚本中定义的函数或方法(无需导入)。 因此,主脚本不会等待执行完成。就像这样(代码是错误的,但它说明了这个概念): 编辑: 谢谢你的评论!显然,当需要生成内部方法或函数时,需要使用多处理模块。当多处理模块方法pool.map()用于向其调用的函数发送参数变量时,它的行为似乎与“标准”函数截然不同 例子 导入操作系统,系统 来自多处理导入池 def printMe(参数): arg+=“\u已完成” 返回参数 myList=['1','2','3'] 池=池(进程=10) 结果=pool.map(printMe,myList) 打印结果、类型(结果)、长度(结果) #[完成一个、完成两个、完成三个]3的结果 SingleWord=“一次又一次” 池=池(进程=10) 结果=pool.map(printMe,SingleWord) #结果发送至:[“O_完成”、“n_完成”、“c_完成”、“e_完成”、“p_完成”、“O_完成”、“n_完成”、“A_完成”、“A_完成”、“i_完成”、“m_完成”、“e_完成”]16`Python:可以生成函数或方法吗?,python,subprocess,Python,Subprocess,我想知道是否有可能使用subprocess模块生成多个进程,以运行在同一脚本中定义的函数或方法(无需导入)。 因此,主脚本不会等待执行完成。就像这样(代码是错误的,但它说明了这个概念): 编辑: 谢谢你的评论!显然,当需要生成内部方法或函数时,需要使用多处理模块。当多处理模块方法pool.map()用于向其调用的函数发送参数变量时,它的行为似乎与“标准”函数截然不同 例子 导入操作系统,系统 来自多处理导入池 def printMe(参数): arg+=“\u已完成” 返回参数 myList=[
这就是为什么
多处理
成为标准库的原因
from multiprocessing import Pool
def run(*args):
# this is the function to be run
return sum(*args)
if __name__ == "__main__":
pool = Pool(processes=10) # 10 processes
results = pool.map(run, [(1, 1, 1), (2, 2, 2), (3, 3, 3)])
print(results)
@Spuntnix作为您的更新pool.map
实际上期望第二个参数是iterable。因此,如果给它一个字符串,它将遍历该字符串并将每个字符作为参数发送
就我个人而言,我希望str不太合适。另请参见:这就是为什么
多处理
成为标准库的原因
from multiprocessing import Pool
def run(*args):
# this is the function to be run
return sum(*args)
if __name__ == "__main__":
pool = Pool(processes=10) # 10 processes
results = pool.map(run, [(1, 1, 1), (2, 2, 2), (3, 3, 3)])
print(results)
@Spuntnix作为您的更新pool.map
实际上期望第二个参数是iterable。因此,如果给它一个字符串,它将遍历该字符串并将每个字符作为参数发送
就我个人而言,我希望str不太合适。另请参见:您可以使用多处理,而不必使用池
import multiprocessing
def worker():
"""worker function"""
print 'Worker'
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker)
jobs.append(p)
p.start()
您可以使用多处理,而不必使用池
import multiprocessing
def worker():
"""worker function"""
print 'Worker'
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker)
jobs.append(p)
p.start()
使用模块。不过,您必须注意传递要处理的数据,因此在您的示例中,您必须更改
printMe
。或者使用模块查看此问题。不过,您必须注意传递要处理的数据,因此在您的示例中,您必须更改printMe
。或者查看此问题谢谢您的澄清!我刚刚测试了pool.map()以在代码中生成一个内部方法(函数)。一切顺利。但执行会暂停(停止、暂停)等待生成的进程完成。我认为生成的主要思想是确保程序不会等待进程完成。@Sputnix使用pool.map\u async
,如果这是您想要的。是的!map_async正是我所需要的!myProcess=pool.map\u async(myFunction、myArgList、callback=results.append)感谢您的澄清!我刚刚测试了pool.map()以在代码中生成一个内部方法(函数)。一切顺利。但执行会暂停(停止、暂停)等待生成的进程完成。我认为生成的主要思想是确保程序不会等待进程完成。@Sputnix使用pool.map\u async
,如果这是您想要的。是的!map_async正是我所需要的!myProcess=pool.map\u async(myFunction、myArgList、callback=results.append)