Python 如何获得收益率指标?
我有这样的代码:Python 如何获得收益率指标?,python,yield,Python,Yield,我有这样的代码: def iter_commit(LogFileName): with open(path.join(__folder__, LogFileName)) as LogFileName_file: for index, schema in enumerate(LogFileName_file): if len(schema) > 10: yield index, schema.rstrip('\n
def iter_commit(LogFileName):
with open(path.join(__folder__, LogFileName)) as LogFileName_file:
for index, schema in enumerate(LogFileName_file):
if len(schema) > 10:
yield index, schema.rstrip('\n')
def makePool(cP, func, iters):
try:
pool = ThreadPool(cP)
pool.map_async(func,iters).get(99999)
pool.close()
pool.join()
except:
print('Pool Error')
raise
finally:
pool.terminate()
def Parse(RoWnum, Link):
print(RoWnum, Link)
makePool(50, partial(Parse, iter_commit(strSiteMap)[0]),
iter_commit(strSiteMap)[1])
但我得到的是error TypeError:“generator”对象是不可下标的
那么如何获得收益率指数呢?我可能不完全理解您要做的事情,但是下面的内容可能会有所帮助,因为它不需要指数值。它所做的是向makePool函数传递一个迭代器,迭代器将生成解析函数期望的成对值,并将它们作为元组传递
from multiprocessing.pool import ThreadPool
def pairwise(iterable):
"s -> (s0,s1), (s2,s3), (s4, s5), ..."
a = iter(iterable)
return zip(a, a)
strSiteMap = ['site0', 13, 'site1', 42]
def makePool(cP, func, iters):
try:
pool = ThreadPool(cP)
pool.map_async(func, iters).get(99999)
pool.close()
pool.join()
except Exception:
print('Pool Error')
raise
finally:
pool.terminate()
def Parse(args):
RowNum, Link = args
print('Parse({!r}, {!r}) called'.format(RowNum, Link))
makePool(50, Parse, pairwise(strSiteMap))
您需要调用next或使用generator中的itertools.islicesave值,以及该项[]之后的值,例如gen=iter\u commitstrSiteMap;第一个=下一个;second=nextgena你确定你不想要像mapParse、iter\U commitstrSiteMap这样的东西吗?为什么我需要?只有map_async可以被ctrl+c中断?