小编Fra*_*Boi的帖子

如何从Python中的另一个线程中止socket.recv()

我有一个等待连接的主线程.它产生的客户端线程将回应客户端的响应(在本例中为telnet).但是说我想在一段时间后关闭所有套接字和所有线程,比如在1次连接之后.

我该怎么办?如果我clientSocket.close()从主线程做,它将不会停止做recv.它只会在我第一次通过telnet发送内容时停止,然后它将无法进行进一步的发送和recvs.

我的代码看起来像这样:

# Echo server program
import socket
from threading import Thread
import time

class ClientThread(Thread):
    def __init__(self, clientSocket):
            Thread.__init__(self)
            self.clientSocket = clientSocket

    def run(self):
            while 1:
                    try:
                            # It will hang here, even if I do close on the socket
                            data = self.clientSocket.recv(1024)
                            print "Got data: ", data
                            self.clientSocket.send(data)
                    except:
                            break

            self.clientSocket.close()

HOST = ''
PORT = 6000
serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serverSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serverSocket.bind((HOST, PORT))
serverSocket.listen(1)

clientSocket, addr = serverSocket.accept()
print 'Got …
Run Code Online (Sandbox Code Playgroud)

python sockets multithreading recv

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

使用g ++编译-pg标志时,不会创建gmon.out

我在Mac OSX上运行,版本10.8.5(Mountain Lion).我有以下简单的C++代码.

main.cpp:

#include <iostream>

int main ()
{
    std::cout << "Hello world!"<<std::endl;
    std::cout << "Goodbye world!"<<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正试图让gprof在我的电脑上工作.如手册所示,我在我的终端中输入以下两行:

g++ -g -pg main.cpp -o a.out 
./a.out
Run Code Online (Sandbox Code Playgroud)

但是,这不会生成gmon.out应该的文件.当我尝试gprof在终端输入时,它说:

gprof: can't open: gmon.out (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

这是预料到的,因为gmon.out不存在......

关于我做错了什么的任何想法?

编辑:其他一些可能有帮助的事情:

  • 我的朋友,有一个类似的OS X版本(我可以让他后来确认),以及完全相同的版本,g++并且gprof能够gprof成功使用,如我所概述的那样.

  • 我使用的是旧版本,g++但我在网上看到更新到新版本并没有帮助.

  • a.out完美的作品,它打印出Hello world!Goodbye world!.我还尝试使用更复杂的C++程序和几个类,它仍然有同样的问题.一切都编译并正常运行,但没有生成gmon.out文件.

c++ macos g++ gprof

13
推荐指数
1
解决办法
6042
查看次数

Bash:scp目录中的所有文件,但不是子目录

我想从特定目录中的远程目标复制所有文件writegrid,但不复制子目录,例如中的文件writegrid/output_files.

这个

scp -r cory@blah.com:~/writegrid/* ./
Run Code Online (Sandbox Code Playgroud)

也将复制文件writegrid/output_files.

谢谢.

bash scp

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

Node.js V8通过引用传递

我想知道如何在V8中管理内存.看看这个例子:

function requestHandler(req, res){
  functionCall(req, res);
  secondFunctionCall(req, res);
  thirdFunctionCall(req, res);
  fourthFunctionCall(req, res);
};

var http = require('http');
var server = http.createServer(requestHandler).listen(3000);
Run Code Online (Sandbox Code Playgroud)

reqres变量在每个函数调用过去了,我的问题是:

  1. V8是通过引用传递还是在内存中复制?
  2. 是否可以通过引用传递变量,请看这个例子.

    var args = { hello: 'world' };
    
    function myFunction(args){
      args.newHello = 'another world';
    }
    
    myFunction(args);
    console.log(args);
    
    Run Code Online (Sandbox Code Playgroud)

    最后一行,console.log(args);将打印:

    "{ hello: 'world', newWorld: 'another world' }"
    
    Run Code Online (Sandbox Code Playgroud)

感谢您的帮助和答案:)

javascript v8 pass-by-reference node.js

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

非轮询/非阻塞定时器?

到目前为止,我发现的最佳解决方案是使用该sleep()功能.我想在计时器到期事件发生时运行我自己的回调函数.是否有任何事件驱动的方式去做?

from time import sleep

# Sleep for a minute
time.sleep(60)
Run Code Online (Sandbox Code Playgroud)

python timer

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

几个线程中的Jmeter随机变量

我有一个Jmeter线程组,它在uuid整个过程中多次使用该变量.

uuid 定义为 12345678-1234-4444-a123-${__Random(111111111111,999999999999)}

换句话说,它以固定系列开始,12345678-1234-4444-a123-然后随机化最后十二个字符.

我想同时运行多个线程,这给出了以下问题.

当我uuid在线程组中定义为用户定义的变量时,它会随机化一次,然后将该值用于我的所有线程.如果我将它设置为全球,则会发生同样的事情.

当我完成时,我将同时运行数千个线程,因此我无法进行手动解决方案或读取/写入磁盘.

有没有人有这方面的经验?我已经通过文档和谷歌了很长一段时间,但似乎无法找到解决方案.

简而言之:我需要随机化一个变量,在整个线程组中使用该变量,并在几个同时线程中运行该线程组.变量在每个不同的线程中应该具有不同的随机值.

random jmeter

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

从数据框中获取价值

在Scala中,我可以做get(#)getAs[Type](#)从数据帧中获取值.我应该怎么做pyspark

我有两列DataFrame:item(string)salesNum(integers).我做了一个groupbymean得到这样的数字的平均值:

saleDF.groupBy("salesNum").mean()).collect()

它的工作原理.现在我在数据框中有一个值的平均值.

如何从数据框中获取该值以将均值作为浮点数?

python type-conversion apache-spark-sql pyspark

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

MongoDB中的find()和findOne()方法显示不同的结果

我有一个Mongo数据库,在users集合中我只有1个文档.我使用用户名过滤器执行find()和findOne()操作.我认为我认为是find()操作的错误结果.

MongoDB shell version: 3.2.10
connecting to: test
Server has startup warnings: 
2016-10-20T20:37:32.681-0700 I CONTROL  [initandlisten] 
2016-10-20T20:37:32.681-0700 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-10-20T20:37:32.681-0700 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-10-20T20:37:32.681-0700 I CONTROL  [initandlisten] 
2016-10-20T20:37:32.681-0700 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-10-20T20:37:32.681-0700 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-10-20T20:37:32.681-0700 I CONTROL  [initandlisten] 
> use lab2
switched to db lab2
> db.users.find()
{ "_id" : ObjectId("5807ac0765f24dd0660e4332"), "username" : "avtrulzz", …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query

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

python中的类型转换从float到int

我试图改变data_df它的类型float64int.

data_df['grade'] = data_df['grade'].astype(int)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误.

int()的基数为10的无效文字:'17 .44'

python pandas

9
推荐指数
1
解决办法
1万
查看次数

pyspark计算一行中所有列的平均值

我想计算每列的平均值而不指定所有列名称。

例如,不要这样做:

res = df.select([mean('col1'), mean('col2')])
Run Code Online (Sandbox Code Playgroud)

我想做一些相当于:

res = df.select([mean('*')])
Run Code Online (Sandbox Code Playgroud)

那可能吗?

mean python-3.x pyspark

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