【发布时间】:2016-12-20 22:43:47
【问题描述】:
请多多包涵,因为这是我实际应用的一个人为示例。假设我有一个数字列表,我想使用多个 (2) 进程为列表中的每个数字添加一个数字。我可以这样做:
import multiprocessing
my_list = list(range(100))
my_number = 5
data_line = [{'list_num': i, 'my_num': my_number} for i in my_list]
def worker(data):
return data['list_num'] + data['my_num']
pool = multiprocessing.Pool(processes=2)
pool_output = pool.map(worker, data_line)
pool.close()
pool.join()
然而,我的问题出现了问题。假设我想交替加两个数字(而不是只加一个)。所以大约一半时间,我想添加my_number1,另一半时间我想添加my_number2。将哪个数字添加到列表中的哪个项目并不重要。但是,一个要求是我不想在不同的进程中同时添加相同的数字。这归结为本质上(我认为)是我想在进程 1 上使用第一个数字,在进程 2 上使用第二个数字,以便进程永远不会同时添加相同的数字。所以像:
my_num1 = 5
my_num2 = 100
data_line = [{'list_num': i, 'my_num1': my_num1, 'my_num2': my_num2} for i in my_list]
def worker(data):
# if in Process 1:
return data['list_num'] + data['my_num1']
# if in Process 2:
return data['list_num'] + data['my_num2']
# and so forth
是否有一种简单的方法可以指定每个进程的特定输入?有没有其他方法可以考虑这个问题?
【问题讨论】:
标签: python multiprocessing python-multiprocessing