首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用并发线程时为什么会出现数据重复

使用并发线程时为什么会出现数据重复
EN

Stack Overflow用户
提问于 2019-04-24 05:05:56
回答 1查看 88关注 0票数 1
代码语言:javascript
复制
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)

我的代码运行得很好,但问题是有些数据会重复。我认为这会发生线程复制,同时发布相同的请求,因为这是一个并发方法。我可以知道如何避免这种情况发生吗?

已更新

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2019-04-24 05:21:22

submit函数接受应该传递给该函数的参数。也许可以试着把它们传进去?

代码语言:javascript
复制
    pool.submit(postRequest, x, y, z)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55819427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档