Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中使用map(fn,iterable)从不调用函数的多线程_Python_Multithreading_Generator - Fatal编程技术网

Python中使用map(fn,iterable)从不调用函数的多线程

Python中使用map(fn,iterable)从不调用函数的多线程,python,multithreading,generator,Python,Multithreading,Generator,我有一个生成器,用于一次收集50个要处理的项目: batch_generator = retrieve_batch() 然后,我使用了multiprocessing.dummy模块中提供的map函数为iterable(generator)中的每个项调用函数,但是我可以看到,尽管生成器正在执行,但提供给map的函数从未被调用,并且我假设它返回一个结果 请注意,我很高兴生成器在单个线程上工作 有谁能告诉我这是否是一种可行的方法,因为我对python相当陌生,并且是第一次处理这些问题 有用代码: d

我有一个生成器,用于一次收集50个要处理的项目:

batch_generator = retrieve_batch()
然后,我使用了
multiprocessing.dummy
模块中提供的
map
函数为iterable(generator)中的每个项调用函数,但是我可以看到,尽管生成器正在执行,但提供给
map
的函数从未被调用,并且我假设它返回一个结果

请注意,我很高兴生成器在单个线程上工作

有谁能告诉我这是否是一种可行的方法,因为我对python相当陌生,并且是第一次处理这些问题

有用代码:

def something():
    batch_generator = retrieve_batch()
    pool.map(_run_process_on_batch, batch_generator)

def _run_process_on_batch(batch):
    print 'I here'

batch\u generator=retrieve\u batch()
这个方法到底返回什么?Hi@TomDalton,这个方法通过id返回一个“Persons”的dict。这在一个线程中工作,所以我认为它一定与我使用的方法有关。可能是
pool.map
将该项传递给函数,但是您的函数不接受任何参数,pool.map中的每个函数调用都会以静默方式失败。尝试在批处理(person\u id)上使用
def\u run\u process\u进行更改:
另外,生成器在python中是一个特定的构造,它与字典非常不同,因此尽量避免将其用作变量名的一部分,除非该变量确实包含生成器@TomDalton retrieve_batch方法生成一个映射,这不是使它成为一个生成器吗?我还不得不修改这个问题,因为代码不完整(昨晚在出门的路上匆匆忙忙)。批处理上的_run _process _有一个参数(批处理),我希望它是一个映射