import csv
from itertools import groupby
import requests
from gevent.threadpool import ThreadPoolExecutor
def postRequest():
postapi = requests.post(ENDPOINT_URL, json=groups, headers=headers)
pool = ThreadPoolExecutor(max_workers=20)
with open("car.csv", "r") as csv_ledger:
r = csv.DictReader(csv_ledger)
data = [dict(d) for d in r]
groups = {}
for k, g in groupby(data, lambda r: (r[ 'bmw' ])):
items = [ ]
for i in g:
#data process
pool.submit(postRequest)
pool.shutdown(wait=True)我的代码运行得很好,但问题是有些数据会重复。我认为这会发生线程复制,同时发布相同的请求,因为这是一个并发方法。我可以知道如何避免这种情况发生吗?
已更新
def postRequest(message):
postapi = requests.post(ENDPOINT_URL, json=groups, headers=headers)
return message
pool = ThreadPoolExecutor(max_workers=20)
with open("car.csv", "r") as csv_ledger:
r = csv.DictReader(csv_ledger)
data = [dict(d) for d in r]
groups = {}
for k, g in groupby(data, lambda r: (r[ 'bmw' ])):
items = [ ]
for i in g:
#data process
future = pool.submit(postRequest,("hello"))
print(future.done())
sleep(2)
print(future.result())
pool.shutdown(wait=True)发布于 2019-04-24 05:21:22
submit函数接受应该传递给该函数的参数。也许可以试着把它们传进去?
pool.submit(postRequest, x, y, z)https://stackoverflow.com/questions/55819427
复制相似问题