如何执行函数并行:Python
我试图使用多处理并行执行下面的代码,但没有得到正确的输出 使用1的迭代和使用5的迭代应该并行进行如何执行函数并行:Python,python,python-3.x,multithreading,Python,Python 3.x,Multithreading,我试图使用多处理并行执行下面的代码,但没有得到正确的输出 使用1的迭代和使用5的迭代应该并行进行 from multiprocessing import Pool def func1(x): i = x while i < 10: print(str(i)+" fun1") i +=1 if __name__ == '__main__': pool = Pool(processes=1) pool.map(func1, [
from multiprocessing import Pool
def func1(x):
i = x
while i < 10:
print(str(i)+" fun1")
i +=1
if __name__ == '__main__':
pool = Pool(processes=1)
pool.map(func1, [1,5])
来自多处理导入池的
def func1(x):
i=x
当我<10时:
打印(str(i)+“fun1”)
i+=1
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
池=池(进程=1)
map(func1[1,5])
我得到的结果是:进行更多的迭代
1、2、3、4、5、6、7、8、9、5、1
6 fun1 7 fun1 8 fun1 9 fun1
预期输出:两个迭代应该并行进行
from multiprocessing import Pool
def func1(x):
i = x
while i < 10:
print(str(i)+" fun1")
i +=1
if __name__ == '__main__':
pool = Pool(processes=1)
pool.map(func1, [1,5])
1、5、12、6、3、7、4、8、5、9、1
6 fun1 7 fun1 8 fun1 9 fun1
由于全局解释器锁,您所期望的不会发生。请看一看:由于全局解释器锁定,您所期望的不会发生。请看一看:我无法用您的代码重现您的结果。我得到了预期的行为(注意在'if'语句之前调用'func1': 1、2、3、4、5、6、7、8、9、1、1 2、3、4、5、6、7、8、9、5、6、1 7 fun1 8 fun1 9 fun1 出于某种原因,您正在调用func1(1)三次
在任何情况下,您只启动一个进程,因此执行将是串行的。要获得并行执行,您需要多个进程。我无法用代码重现您的结果。我得到了预期的行为(注意在'if'语句之前调用'func1': 1、2、3、4、5、6、7、8、9、1、1 2、3、4、5、6、7、8、9、5、6、1 7 fun1 8 fun1 9 fun1 出于某种原因,您正在调用func1(1)三次
在任何情况下,您只启动一个进程,因此执行将是串行的。要获得并行执行,您需要多个进程。我更新了问题请看我更新了问题请看多个进程通过使用多个进程来解决这个问题,每个进程都有自己的锁。我要说的是
processs=1
是限制这段代码的因素,还有一个简单的事实,那就是作业太短了,一个人可能会在别人被告知该做什么之前完成。第三,工作效率低下map
通常会收集返回值。多处理通过使用多个进程来解决这一问题,每个进程都有自己的锁。我要说的是processs=1
是限制这段代码的因素,还有一个简单的事实,那就是作业太短了,一个人可能会在别人被告知该做什么之前完成。第三,工作效率低下<代码>映射通常会收集返回值。我已经更新了代码。请看一看……我使用了2个过程,但结果仍然相同。您是否希望其他打印?如果是这样的话,如果你不强迫进程等待其他进程,这是非常不可能的。我已经更新了代码。你能看一下吗…我使用了2个进程,但仍然是相同的结果。你希望另一个打印吗?如果是这样的话,如果您不强制这些进程等待其他进程,那么这是非常不可能的。