小编Amr*_*hna的帖子

为什么我们需要为C中的并发服务器中的每个客户端创建不同的进程?

我正在开发一个简单的客户端服务器程序,目的是创建一个聊天程序.我不熟悉C语言中的套接字编程.我了解到,为了服务多个客户端,服务器需要在每次客户端连接时分叉一个新进程.每次客户端请求连接时,该accept()函数返回描述符ID,并在fork()父节点关闭id之后.

相反,我没有关闭ID,这样当调用accept()时,每个新客户端都会获得一个newid.

nsockfd = accept(lsockfd, (struct sockaddr *) &cli_addr, &cli_len);
Run Code Online (Sandbox Code Playgroud)

现在这存储在2个变量中:

    if (client1 < 0)
    {   client1 = nsockfd;
        printf("if loop %d\n",nsockfd);
    }
    else 
    {   client2 = nsockfd;
        printf("else loop %d\n",nsockfd);
    }
Run Code Online (Sandbox Code Playgroud)

现在其余的代码是

        snprintf(buf, sizeof(buf), "Hi client1 Nice to meet you.",inet_ntoa(cli_addr.sin_addr));

        ret = send(client1, buf, strlen(buf), 0);
        if (ret == -1) {
            perror("Error sending message");
            exit(1);
                }
        printf("SRV - %s\n", buf);
        strcpy(buf,"");
        snprintf(buf, sizeof(buf), "Hi client2 Nice to meet you.",inet_ntoa(cli_addr.sin_addr));
        if(client2 > 0)     
        {ret = send(client2, …
Run Code Online (Sandbox Code Playgroud)

c unix sockets networking unix-socket

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

在 C 中删除原始文件的符号链接

我正在编写一个 C 程序,它使用 *NIX 系统调用。现在,当用户要求删除特定文件时,我想删除为该文件创建的所有符号链接,也将删除。如何做到这一点?

c unix linux

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

处理推文时使用 JSON 或正则表达式

哪种方法更快,使用 JSON 解析器(python 2.6)或正则表达式来获取相关数据。由于数据量巨大,我认为使用一种方法与其他方法相比在时间上会有很大差异。

python regex json python-2.6

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

在 scikit dict vectorizer 中按特征名称提取特征

我有一个字典列表,我使用DictVectorizerin将其转换为向量表示scikit-learn

from sklearn.feature_extraction import DictVectorizer
vec = DictVectorizer()
dictvector = D = [{'foo': 'city1', 'bar': 2, 'label':'c1'}, {'foo': 'city2', 'baz': 1, 'label':'c2'}]
dictVector = vec.fit_transform(dictList)
Run Code Online (Sandbox Code Playgroud)

现在,我想从每一行中提取特征“标签”的所有元组的值,然后将它们从向量中删除。这将有助于将向量用作决策树分类器的输入,scikit并将相应的标签用作分类器的基本事实。

但是当我尝试将功能名称称为字典键时。我被要求只使用整数而不是字符串。如何解决相同的问题?

python numpy scipy scikit-learn

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

使用pandas中的groupby过滤数据

我有一个DataFrame,我有以下数据.每行代表一个出现在电视剧每集中的单词.如果一集中出现3次单词,则pandas数据框有3行.现在我需要过滤一个单词列表,这样我只能得到大于或等于2次的单词.我可以这样做groupby,但如果一个单词出现2(或说3,4或5)次,我需要两行(3,4或5)行.

通过groupby,我将只获得唯一的条目和计数,但我需要重复该对话的次数.这样做有一个单行吗?

       dialogue  episode
0         music        1
1   corrections        1
2       somnath        1
3         yadav        5
4          join        2
5     instagram        1
6          wind        2
7         music        1
8    whimpering        2
9         music        1
10         wind        3
Run Code Online (Sandbox Code Playgroud)

所以我应该理想地得到,

   dialogue  episode
0     music        1
6      wind        2
7     music        1
9     music        1
10     wind        3
Run Code Online (Sandbox Code Playgroud)

因为这些是出现超过或等于2次的唯一2个单词.

python dataframe pandas

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

设置海底图的x轴间隔

我要绘制一组子图。在这里,我们如何在第二行的子图中将x轴的间隔设置ax4为ax6。如图所示,当前打印从1到100的所有值。我试过了ax4.set_xticks(range(1,100,5))。但是这里显示的范围是1到20。我期望的范围是1到100,间隔为5,即1,5,10...95,100

当前,该图具有x轴,如下所示。我还没有为第一行添加代码。

在此处输入图片说明

yInit = initRes
yInit = yInit[(yInit['nodeSKT'] < 92) & (yInit['nodeSKT'] > 1)]

sns.set_context("paper", font_scale=2, rc={"lines.linewidth": 1.2})
fig, (ax4, ax5, ax6) = plt.subplots(nrows=1,ncols=3,figsize=(18,10))
plt.figure()

xval = 'nodeSKT'
sns.pointplot(x=xval, y='lemmaPrec', data=yInit,join=False,ax=ax4)
sns.pointplot(x=xval, y='wordPrec',color="#2ecc71",data=yInit, join=False,ax=ax4)
sns.pointplot(x=xval, y='lemmaReca', data=yInit,join=False,ax=ax5)
sns.pointplot(x=xval, y='wordReca',color="#2ecc71",data=yInit, join=False,ax=ax5)
sns.pointplot(x=xval, y='lemmaFsco', data=yInit,join=True,ax=ax6)
sns.pointplot(x=xval, y='wordFsco',color="#2ecc71",data=yInit, join=False,ax=ax6)
plt.savefig('lem_fscore.png')
Run Code Online (Sandbox Code Playgroud)

python matplotlib python-3.x seaborn

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

将包含可变长度列表的数据框列转换为数据框中的多列

我有如下所示的pandas数据框。

该列props包含列表,列表中的元素长度不同。我知道列表中的最大条目数为5。我也知道列表是有序的,即我知道第二项始终属于具有特定标题(例如“时态”或“数字”)的列。然后,如何将列表中的每个条目转换为单独的列?

id  source   type   target          props                        subtype
2   wyrzuci?    V   wyrzucisz       [FUT, 2, SG]                 NaN
6   ?niada?     V   ?niada?         [NFIN]                       NaN
7   bankrutowa? V   bankrutuj?cy    [PST, ACT, PL, MASC, HUM]    PTCP
8   chwia?      V   b?d? chwia?y    [FUT, 3, PL]                 NaN
23  doby?       V   doby?a?         [PST, 2, SG, FEM]            NaN
Run Code Online (Sandbox Code Playgroud)

我已经尝试usntack()了tolist()方法,也尝试了方法。但是解决方案不适用于特定情况。

python pandas

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

除非在使用输出重定向时调用显式fflush函数,否则线程不提供输出

我正在编写一个多线程程序.该计划的结构如下

int main()
{

    printf("To Call threads\n");
    thread1=pthread_create(&trd1,NULL,process1,(void *)sleepTimeForP1);
    thread2=pthread_create(&trd2,NULL,process2,(void *)sleepTimeForP2);
    pthread_join(trd1, NULL);
    pthread_join(trd2, NULL);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

线程的代码是

void *process1 (void *sleepTimeForP1)
{
    int *tsleepTimeForP1 = (int *)sleepTimeForP1;
    while(1)
    {
        pthread_mutex_lock(&lock);
        printf("inside thread\n");
        pthread_mutex_unlock(&lock);
        sleep(1);
    }

}
Run Code Online (Sandbox Code Playgroud)

代码工作正常,并在没有输出重定向时打印输出.但是,当给出输出重定向时,文件中不会获得输出.现在,如果我fflush(stdout)在每个printf()语句后都明确说明,那么我得到了所需的输出.为什么我需要给出明确的fflush()?

c unix linux multithreading io-redirection

0
推荐指数
1
解决办法
99
查看次数