gpt4 book ai didi

python - 我可以将一个函数作为参数发送给所有具有多处理的进程吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:38 25 4
gpt4 key购买 nike

我有一个多处理用例,我想编写一个接收 python 函数和输入队列作为输入的调度函数,然后通过多处理在该输入上调度该函数?

我不确定 args 是否适合传入,因为函数不会严格地共享。

import multiprocessing

def dispatch(queue, function):
while True:
if queue.empty():
return
current_project = queue.get()
function(current_project)

def letter_rip(projects_filename, function):
project_file = open(projects_filename, 'r')
projects = project_file.readlines()
project_file.close()

q = multiprocessing.Queue()
for project in projects:
q.put(project)

for i in xrange(0, 128):
p = multiprocessing.Process(target=dispatch, args=(q, ???function??? ))
p.start()

最佳答案

函数是(当用作函数而不是对象时)不可变对象(immutable对象),因此它们的简单用法不会引起任何问题:

from multiprocessing import Process, Value

def callback(x):
return x * 2

def handler(x, fn, a):
a.value = fn(x.value)

if __name__ == '__main__':
x = Value('d', 2)
a = Value('d', 0)
p1 = Process(target=handler, args=(x, callback, a))
p2 = Process(target=handler, args=(x, callback, a))
p1.start()
p2.start()
p1.join()
p2.join()
print a.value

关于python - 我可以将一个函数作为参数发送给所有具有多处理的进程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11872142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com