There are some problems with your code:
- you call
run
with parameters, then pass the result to starmap
, but you have to pass both the function and its parameters separately to starmap
- your args are a tuple of first the product of all queries, then the cursor, but you rather want to combine each of those query-combinations with the cursor
- your function expects a single parameter that you then unpack inside the function, so you should use
map
; for starmap
it should be def run(query, cursor)
Try this:
import multiprocessing
import itertools
def run(args):
query, cursor = args
print("running", query, cursor)
queries = ["foo", "bar", "blub"]
cursor = "whatever"
with multiprocessing.Pool(processes=10) as pool:
args = ((args, cursor) for args in itertools.product(queries))
results = pool.map(run, args)
There may be more "upstream" errors, like that SSLSocket
stuff, but this should at least (try to) call the function with the correct parameters.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…