小编May*_*kar的帖子

为什么我在Python中使用Thread获取TypeError

我有以下代码,这是基于我在这里找到的一个例子,但是当我运行它时,我得到一个错误.请帮忙,我确定它非常简单:

def listener(port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.bind(('',port))
    sock.settimeout(1) # n second(s) timeout
    try:
        while True:
            data, addr = sock.recvfrom(1024)
            print data
    except socket.timeout:
        print 'Finished'

def startListenerThread(port):
    threading.Thread(target=listener, args=(port)).start()
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/threading.py", line 522, in __bootstrap_inner
    self.run()
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/threading.py", line 477, in run
    self.__target(*self.__args, **self.__kwargs)
TypeError: listener() argument after * must be a sequence, not int
Run Code Online (Sandbox Code Playgroud)

python multithreading

17
推荐指数
3
解决办法
2万
查看次数

一个线性元组/对在 C++ 中解包,多次重用同一变量

我已经看到是否有一个单行代码可以将元组/对解包到引用中?并知道如何将元组/对中的值解压到单行中,如下所示

auto [validity, table] = isFieldPresentAndSet(r, "is_federated");
Run Code Online (Sandbox Code Playgroud)

这里isFieldPresentAndSet返回一个元组。

现在我想在多次连续调用中重用这两个变量,isFieldPresentAndSet如下所示

auto [validity, table] = isFieldPresentAndSet(r, "is_federated");
auto [validity, table] = isFieldPresentAndSet(r, "gslb_sp_enabled");
Run Code Online (Sandbox Code Playgroud)

validity然后检查和的值table。但这给了我编译错误,因为我第二次重新定义了validityand变量。table如果将第二行更改为

[validity, table] = isFieldPresentAndSet(r, "gslb_sp_enabled"); 
Run Code Online (Sandbox Code Playgroud)

或者

validity, table = isFieldPresentAndSet(r, "gslb_sp_enabled"); 
Run Code Online (Sandbox Code Playgroud)

它仍然给我编译错误。

有什么办法可以做到这一点吗?

c++ std-pair c++17

12
推荐指数
1
解决办法
1092
查看次数

如何在sqlc golang中将文本类型从pgtype.Text更改为字符串?

我有给定查询的生成代码

INSERT INTO "users" (
    username,
    name,
    surname,
    email,
    hashed_password,
    role
) VALUES (
    $1, $2, $3, $4, $5, $6
) RETURNING "id", "username";
Run Code Online (Sandbox Code Playgroud)

看起来像这样

type CreateUserParams struct {
    Username       string      `json:"username"`
    Name           pgtype.Text `json:"name"`
    Surname        pgtype.Text `json:"surname"`
    Email          string      `json:"email"`
    HashedPassword string      `json:"hashed_password"`
    Role           UserRole    `json:"role"`
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能变成Name pgtype.Textgolang字符串?目前我的sqlc.yaml文件如下所示

INSERT INTO "users" (
    username,
    name,
    surname,
    email,
    hashed_password,
    role
) VALUES (
    $1, $2, $3, $4, $5, $6
) RETURNING "id", "username";
Run Code Online (Sandbox Code Playgroud)

我的架构如下所示

type CreateUserParams …
Run Code Online (Sandbox Code Playgroud)

go sqlc

8
推荐指数
1
解决办法
1229
查看次数

如何获取多索引数据帧的前两个索引的dict

我有一个如下所示的数据框

在此输入图像描述

我想知道是否存在一种在pandas中创建python dict的最快方法,它将保存如下数据

table = {2: [4, 5, 6, 7, 8 ...], 4: [1, 2, 3, 4, ...]}
Run Code Online (Sandbox Code Playgroud)

这里的键是用户ID,值是唯一的日期列表.

这可以在core python的早期完成,但是想知道是否有一个基于pandas或numpy的方法来快速计算.我需要一个快速解决方案,当这个数据框变大时,它可以很好地扩展

编辑1:表演

所需时间:每循环14.3 ms±134μs(7次运行的平均值±标准差,每次100次循环)

levels = pd.DataFrame({k: df.index.get_level_values(k) for k in range(2)})

table = levels.drop_duplicates()\
              .groupby(0)[1].apply(list)\
              .to_dict()

print(table)
Run Code Online (Sandbox Code Playgroud)

采取的时间:每循环17.4 ms±105μs(7次运行的平均值±标准差,每次100次循环)

res.reset_index().drop_duplicates(['user_id','date']).groupby('user_id')['date'].apply(list).to_dict()
Run Code Online (Sandbox Code Playgroud)

采取的时间:每回路294 ms±12.8 ms(平均值±标准偏差,7次运行,每次1次循环)

a = {k: list(pd.unique(list(zip(*g))[1])) 
     for k, g in groupby(df.index.values.tolist(), itemgetter(0))}
print (a)
Run Code Online (Sandbox Code Playgroud)

采取时间:每循环15 ms±187μs(平均值±标准偏差,7次运行,每次100次循环)

pd.Series(res.index.get_level_values(1), index=res.index.get_level_values(0)).groupby(level=0).apply(set).to_dict()
Run Code Online (Sandbox Code Playgroud)

编辑2:再次进行基准测试

错误的结果

idx = df.index.droplevel(-1).drop_duplicates()
l1, l2 = idx.levels
mapping = defaultdict(list)
for i, j in …
Run Code Online (Sandbox Code Playgroud)

python indexing numpy dataframe pandas

7
推荐指数
1
解决办法
231
查看次数

如何将:: any_cast提升为std :: string

我有这个测试片段

#include <boost/any.hpp>
#include <iostream>
#include <vector>
#include <bitset>
#include <string>

class wrapper {
  int value;
  char character;
  std::string str;

public:
  wrapper(int i, char c, std::string s) {
    value = i;
    character = c;
    str = s;
   }

  void get_data(){
    std::cout << "Value = " << value << std::endl;
    std::cout << "Character = " << character << std::endl;
    std::cout << "String= " << str << std::endl;
  }
};

int main(){

   std::vector<boost::any> container;
   container.push_back(10);
   container.push_back(1.4);
   container.push_back("Mayukh");
   container.push_back('A');
   container.push_back(std::bitset<16>(255) );
   wrapper wrap(20, …
Run Code Online (Sandbox Code Playgroud)

c++ boost c++11

6
推荐指数
2
解决办法
6538
查看次数

如何在vim下次重启之前永久保存最后一个代码

所以我的问题是,如果我在vim中编写一些代码然后想要提前20分钟返回,那么我输入:earlier 20mvim.但如果我退出vim一次甚至重新启动系统,这不起作用.我知道它存储在临时寄存器中,一旦vim重新启动,它就会清除整个寄存器缓冲区.但有什么方法可以保存最后的更改并应用一些撤消机制.实际上我在处理一些大项目文件,如果出现错误,我就不能回去了.

vim

3
推荐指数
1
解决办法
59
查看次数

如何使用 GORM 一次一行读取 SQLite 数据库

我有以下代码

package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/mattn/go-sqlite3"
)

func getDatabaseHandle(dbpath string) (*sql.DB, error) {
    database, err := sql.Open("sqlite3", dbpath)
    if err != nil {
        log.Printf("Failed to create the handle")
        return nil, err
    }
    if err = database.Ping(); err != nil {
        fmt.Printf("Failed to keep connection alive")
        return nil, err
    }
    return database, nil
}

func getAllRows(database *sql.DB, table string) {
    query := fmt.Sprintf("SELECT User, AppName FROM %s LIMIT 10", table)
    rows, err := database.Query(query)
    if err != …
Run Code Online (Sandbox Code Playgroud)

go go-gorm

3
推荐指数
1
解决办法
5667
查看次数

使用Goroutines同时加载大型CSV时未定义的行为

我正在尝试使用Golang使用goroutines加载一个大的CSV文件.csv的维数是(254882,100).但是当我解析csv并将其存储到2D列表时使用我的goroutine,我得到的行小于254882,并且每次运行的数量都不同.我觉得这是由于goroutines正在发生,但似乎无法指出原因.谁能帮帮我吗.我也是Golang的新人.这是我的代码如下

func loadCSV(csvFile string) (*[][]float64, error) {
    startTime := time.Now()
    var dataset [][]float64
    f, err := os.Open(csvFile)
    if err != nil {
        return &dataset, err
    }
    r := csv.NewReader(bufio.NewReader(f))
    counter := 0
    var wg sync.WaitGroup
    for {
        record, err := r.Read()
        if err == io.EOF {
            break
        }
        if counter != 0 {
            wg.Add(1)
            go func(r []string, dataset *[][]float64) {
                var temp []float64
                for _, each := range record {
                    f, err := strconv.ParseFloat(each, 64)
                    if err == nil { …
Run Code Online (Sandbox Code Playgroud)

csv go goroutine

3
推荐指数
1
解决办法
133
查看次数

如何在正则表达式中允许 \b 进行 sed 命令替换

我有一个文本文件temp.txt包含

Hello World
My name is MayukhSarkar
My name is mayukh
My name is MAYUKH
My name is MaYuKh
My name is mAyUkH
Run Code Online (Sandbox Code Playgroud)

sed 命令

sed 's/\b[M,m][A,a][Y,y][U,u][K,k][H,h]\b/sobo/g' temp.txt
Run Code Online (Sandbox Code Playgroud)

不是替换Mayukhwith的出现sobo

但是 sed 命令没有\b工作

sed 's/[M,m][A,a][Y,y][U,u][K,k][H,h]/sobo/g' temp.txt
Run Code Online (Sandbox Code Playgroud)

但它也在取代MayukhSarkarsoboSarkar

regex bash sed

2
推荐指数
1
解决办法
704
查看次数

为什么循环变量没有在python中更新

这段代码只打印1 2 4 5 ..我的问题是为什么p在第3次迭代时没有用新数组更新

p = [1, 2, [1, 2, 3], 4, 5]
for each in p:
  if type(each) == int:
    print each
  else:
    p = each
Run Code Online (Sandbox Code Playgroud)

实际上,在调试代码时要确切地说,我看到它实际上更新了p的值但是each变量不会再次重新初始化.

python

2
推荐指数
1
解决办法
119
查看次数

标签 统计

go ×3

python ×3

c++ ×2

bash ×1

boost ×1

c++11 ×1

c++17 ×1

csv ×1

dataframe ×1

go-gorm ×1

goroutine ×1

indexing ×1

multithreading ×1

numpy ×1

pandas ×1

regex ×1

sed ×1

sqlc ×1

std-pair ×1

vim ×1