您如何对零位置参数的函数使用 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()