您如何对零位置参数的函数使用 Python 多处理?
How do you use Python Multiprocessing for a function with zero positional arguments?
这是一个例子:
import multiprocessing
def function():
for i in range(10):
print(i)
if __name__ == '__main__':
p = multiprocessing.Pool(5)
p.map(function, )
产生错误:TypeError: map() missing 1 required positional argument: 'iterable'
该函数不需要任何输入,所以我希望不要人为地强制它。还是多处理需要一些可迭代的?
以下代码 returns / 不打印任何内容。为什么?
import multiprocessing
def function():
for i in range(10):
print(i)
if __name__ == '__main__':
p = multiprocessing.Pool(5)
p.map(function, ())
如果您没有要传入的参数,则不必使用 map
。您可以简单地使用 multiprocessing.Pool.apply
代替:
import multiprocessing
def function():
for i in range(10):
print(i)
if __name__ == '__main__':
p = multiprocessing.Pool(5)
p.apply(function)
如果您只想执行少量任务,出于 here 所述的原因,使用 Process
可能会更好。
This site 提供了关于使用 Process()
的优秀教程,我发现它很有帮助。这是教程中使用 function()
:
的示例
import multiprocessing
def function():
for i in range(10):
print(i)
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=function)
jobs.append(p)
p.start()
这是一个例子:
import multiprocessing
def function():
for i in range(10):
print(i)
if __name__ == '__main__':
p = multiprocessing.Pool(5)
p.map(function, )
产生错误:TypeError: map() missing 1 required positional argument: 'iterable'
该函数不需要任何输入,所以我希望不要人为地强制它。还是多处理需要一些可迭代的?
以下代码 returns / 不打印任何内容。为什么?
import multiprocessing
def function():
for i in range(10):
print(i)
if __name__ == '__main__':
p = multiprocessing.Pool(5)
p.map(function, ())
如果您没有要传入的参数,则不必使用 map
。您可以简单地使用 multiprocessing.Pool.apply
代替:
import multiprocessing
def function():
for i in range(10):
print(i)
if __name__ == '__main__':
p = multiprocessing.Pool(5)
p.apply(function)
如果您只想执行少量任务,出于 here 所述的原因,使用 Process
可能会更好。
This site 提供了关于使用 Process()
的优秀教程,我发现它很有帮助。这是教程中使用 function()
:
import multiprocessing
def function():
for i in range(10):
print(i)
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=function)
jobs.append(p)
p.start()