【发布时间】:2019-02-10 07:39:26
【问题描述】:
我对多处理进行了很多研究! 基本上我是从 API 下载数据并插入数据库。
我创建了一个池并使用 pool.imap 访问下载功能,将结果创建一个元组并一次性插入数据库中。
我反复访问此功能,有时我的进程会挂起! 我尝试关注https://docs.python.org/2/library/multiprocessing.html#multiprocessing.pool.multiprocessing.Pool.map 并使用超时访问加入。
但是 pool.join(timeout) 返回“TypeError: join() 只需要 1 个参数(给定 2 个)”。我想一个参数是默认的“self”?
一小段代码:
timeout = 10
pool = Pool(10)
in_tuple = [x for x in pool.imap(multi_details,items) if x is not None]
pool.close()
pool.join(timeout) # from the documentation I should be able to put the timeout in join
writing_to_database(in_tuple)
# function that generate the content for DB
def multi_details(item):
tuple = get_details(item)
return tuple
我看到了创建进程和生成终止()或加入(超时)的不同方法,但两者都没有使用 imap/map - 这在我的情况下更简单!
【问题讨论】:
标签: python multithreading multiprocessing terminate