问题列表 - 第39357页

mulithread或multiprocess中的python socket.connect超时错误

如下所示,我想与特定IP范围内的许多PC进行通信.

My PC ---+------> Client A PC
         +------> Client B PC
         +------> Client C PC
         .................
         +------> Client Z PC
Run Code Online (Sandbox Code Playgroud)

因为有太多客户端要沟通,所以我尝试了多线程.socket.connect()不断产生超时错误.如果我在单线程中尝试它,那就没问题了.

我用Google搜索并找到了以下内容:

Python解释器阻止多线程DNS请求?

说在某些平台上,套接字模块可能是线程不安全的.

所以我将代码更改为多处理.但是它仍然会产生相同的错误.

在以下代码示例中,test_single()完成正常.test_mp()和test_mt()都会导致超时错误.

你有没有经历过这种异常行为?测试环境是Windows XP SP3,python 2.5.4.还尝试了python 2.6.6和2.7.0,同样的错误.

import multiprocessing
import Queue
import socket
import threading

PROCESS_NUM = 5
PORT = 8888

def search_proc(ip):
    try:
        csock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        csock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        csock.settimeout(5.0)
        csock.connect((ip, PORT))
        csock.shutdown(socket.SHUT_RDWR)
        csock.close()
        return ip, "ok"
    except socket.error, msg:
        return ip, "fail", msg

def mp_connect(ip_range):
    pool = multiprocessing.Pool( PROCESS_NUM )
    for output in …
Run Code Online (Sandbox Code Playgroud)

python sockets multithreading timeout multiprocessing

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

使用geom_smooth和ggplot显示标准偏差

我们有一些数据表示在不同情况下的许多模型运行.对于单个场景,我们希望显示平滑的平均值,其中填充区域表示特定时间点的标准偏差,而不是平滑拟合的质量.

例如:

d <- as.data.frame( rbind( cbind( 1:20, 1:20,1 ), cbind(1:20, -1:-20,2 ) ) )
names(d)<-c("Time","Value","Run")
ggplot( d, aes(x=Time,y=Value) ) + geom_line( aes(group=Run) ) + geom_smooth()
Run Code Online (Sandbox Code Playgroud)

生成一个图表,其中表示两次运行,平滑均值,但即使运行之间的SD增加,平滑的条形也保持相同的大小.我想让更平滑的环绕代表给定时间步长的标准偏差.

考虑到许多不同的运行和输出变量,是否存在非劳动密集型的方法?

statistics r ggplot2

15
推荐指数
1
解决办法
7869
查看次数

WPF控制移动但其装配者 - 不是:"/

我在WPF线元素上创建了一个装饰器,因为需要添加一些文本.

现在,当移动此行时,装饰器不会自动"跟随"该行.事实上,它没有刷新itsef:

替代文字 替代文字
这里黑色曲线是控制图,红色"120米"是装饰图.

一些代码

    void SegmentLine_Loaded(object sender, RoutedEventArgs e)
    {
        AdornerLayer aLayer = AdornerLayer.GetAdornerLayer(this);
        if (aLayer != null)
        {
            aLayer.Add(new TextAdorner(this));
        }
    }

    class TextAdorner : Adorner
    {
        public TextAdorner(UIElement adornedElement)
            : base(adornedElement)
        {
        }

        protected override void OnRender(DrawingContext drawingContext)
        {
            SegmentLine segment = (this.AdornedElement as SegmentLine);

            if (segment != null)
            {
                Rect segmentBounds = new Rect(segment.DesiredSize);
                var midPoint = new Point(
                    (segment.X1 + segment.X2) / 2.0, 
                    (segment.Y1 + segment.Y2) / 2.0);
                var lineFont = // get line font as …
Run Code Online (Sandbox Code Playgroud)

wpf adorner wpf-controls

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

使用awk解析csv并忽略字段内的逗号

我有一个csv文件,其中每行定义给定建筑物中的房间.与房间一起,每排都有一个场地.我要提取的是所有建筑物的所有楼层.

我的文件看起来像这样......

"u_floor","u_room","name"
0,"00BDF","AIRPORT TEST            "
0,0,"BRICKER HALL, JOHN W    "
0,3,"BRICKER HALL, JOHN W    "
0,5,"BRICKER HALL, JOHN W    "
0,6,"BRICKER HALL, JOHN W    "
0,7,"BRICKER HALL, JOHN W    "
0,8,"BRICKER HALL, JOHN W    "
0,9,"BRICKER HALL, JOHN W    "
0,19,"BRICKER HALL, JOHN W    "
0,20,"BRICKER HALL, JOHN W    "
0,21,"BRICKER HALL, JOHN W    "
0,25,"BRICKER HALL, JOHN W    "
0,27,"BRICKER HALL, JOHN W    "
0,29,"BRICKER HALL, JOHN W    "
0,35,"BRICKER HALL, JOHN W    "
0,45,"BRICKER HALL, JOHN W …
Run Code Online (Sandbox Code Playgroud)

csv awk

36
推荐指数
4
解决办法
4万
查看次数

用于Python样式缩进的PEG

您将如何在以下任何可以处理Python/Haskell/CoffeScript样式缩进的分析器生成器(PEG.js,Citrus,Treetop)中编写解析表达式语法:

尚未存在的编程语言的示例:

square x =
    x * x
Run Code Online (Sandbox Code Playgroud)
cube x =
    x * square x
Run Code Online (Sandbox Code Playgroud)
fib n =
  if n <= 1
    0
  else
    fib(n - 2) + fib(n - 1) # some cheating allowed here with brackets
Run Code Online (Sandbox Code Playgroud)

更新: 不要尝试为上面的示例编写解释器.我只对缩进问题感兴趣.另一个例子可能是解析以下内容:

foo
  bar = 1
  baz = 2
tap
  zap = 3

# should yield (ruby style hashmap):
# {:foo => { :bar => 1, :baz => 2}, :tap => { :zap => …
Run Code Online (Sandbox Code Playgroud)

syntax parsing language-design peg treetop

32
推荐指数
3
解决办法
5083
查看次数

发信号通知进程中的所有线程

在不保留当前线程列表的情况下,我试图看到实时信号被传递到我的进程中的所有线程.我的想法是这样做:

  • 最初安装信号处理程序并在所有线程中解除阻塞信号.
  • 当一个线程想要发送"广播"信号时,它获取互斥锁并设置广播发生的全局标志.
  • 发送器pthread_sigmask为自己阻塞信号(使用),并重复进入循环调用,raise(sig)直到sigpending指示信号处于挂起状态(信号被阻止时没有剩余线程).
  • 当线程接收到信号时,它们会对其进行操作,但在信号处理程序中等待广播标志被清除,这样信号将保持屏蔽状态.
  • 发送者通过解锁信号来完成循环(以便获得自己的传送).
  • 当发送方处理自己的信号时,它会清除全局标志,以便所有其他线程可以继续其业务.

我遇到的问题pthread_sigmask是没有得到尊重.如果我运行测试程序strace(可能是由于不同的调度时间),一切正常,但是一旦我单独运行它,发送者就会收到自己的信号(尽管已经阻止了它??)并且没有任何其他线程得到预定.

什么想法可能是错的?我尝试使用sigqueue而不是raise探测信号掩码,添加sleep所有地方以确保线程耐心地等待他们的信号等等,现在我不知所措.

编辑:感谢psmears的回答,我想我明白了这个问题.这是一个潜在的解决方案.反馈会很棒:

  • 在任何给定的时间,我都可以知道正在运行的线程数,如果需要,我可以阻止所有线程创建和退出广播信号.
  • 想要进行广播信号的线程获得锁定(因此没有其他线程可以同时执行),然后阻止信号自身,并向num_threads进程发送信号,然后为自己解除阻塞信号.
  • 信号处理程序以原子方式递增计数器,并且信号处理程序的每个实例都等待,直到该计数器等于num_threads返回.
  • 执行广播的线程也等待计数器到达num_threads,然后它释放锁定.

一个可能的问题是,如果内核内存不足,信号将不会排队(Linux似乎有这个问题).你知道sigqueue当它无法排队信号时是否可靠地通知呼叫者(在这种情况下我会循环直到它成功),或者信号可能会无声地丢失?

编辑2:它现在似乎正在运作.根据文档sigqueue,EAGAIN如果它无法排队信号,它将返回.但为了稳健性,我决定继续呼叫,sigqueue直到num_threads-1信号处理程序运行,sched_yield在我发送num_threads-1信号之后交错呼叫.

在线程创建时有一个竞争条件,计算新线程,但我用一个奇怪的(ab)使用读写锁解决了它.线程创建是"读取"而广播信号是"正在写入",因此除非有线程尝试广播,否则它不会在创建线程时产生任何争用.

c multithreading posix signals pthreads

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

如何在没有用户输入的情况下创建Android RFCOMM套接字?

这是场景:

我需要编写一个Android应用程序来创建一个带有蓝牙适配器的PC的RFCOMM插槽(我也要编写服务器).

我的要求是用户不必手动配对设备.

实际上,有一个大黑客,我正在使用createInsecureRfcommSocket.

一个小场景:我有一个Android应用程序,它与一个打开了RFCOMM套接字的Linux盒子交换信息.我可以在设备上手动设置PIN(硬编码是一种选择)

我正在寻找不同的道路:

编写JNI包装器

如已完成在这里的最大凯勒曼,我可以写一个JNI层,使所有配对阶段.这应该是一个不错的选择,但是有一个问题:

NDK 4b不提供libbluetooth库,因此-lbluetooth失败,以及NDK v.3.

选项:

  1. 找到NDK 1.5(包括lib bluetooth).经过几天的网络搜索,我一直无法找到答案.有人知道我能在哪里找到它吗?
  2. 自己编译libbluetooth for Android并将它们用于-lbluetooth.没有幸运,我无法建造它们.任何提示?

使用API​​公开的内容

任何人都知道如何使用createRfcommSocketToServiceRecord并让用户不要手动配对设备?可能吗?我应该怎么写服务器?

我不知道的东西

也许(肯定!)有一些我不知道的东西.也许我可以用别的东西?不是RFCOMM?SDP?

也许我可以手动配对Android API?

我希望已经足够清楚,如果不是只是问.再次,因为这不是第一次,我在你的手中:)

感谢所有支持人员!

java-native-interface android bluetooth android-ndk rfcomm

30
推荐指数
1
解决办法
9289
查看次数

Internet Explorer中的文字阴影?

我正在编写一个网页,这是它在Firefox,Safari,Opera和Chrome中的外观.

删除了死的ImageShack链接

以及它在Internet Explorer中的外观(支撑你自己)

删除了死的ImageShack链接

Internet Explorer的Text-shadow在哪里?这真让我抓狂!正如你所看到的,这个页面有点依赖于它看起来不错(更不用说标题图像看起来像IE上的废话)

例如,我试过这个(http://pastebin.ca/1994660),它没有用.

这是代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

    <title>Jacob's CTF Highscores</title>
<!--[if IE]><style type="text/css">



</style>
<![endif]-->
<style>
body {
background: url("bg.png") #6d6d6d;
background-repeat:repeat-x;
filter: progid:DXImageTransform.Microsoft.DropShadow(
      offx=1, offy=1, color=#000000);
}
#title {
    background: url("title.png");
    width:450px;
    height:74px;
}
* {padding:0;margin:0;}
#mainwrap {
margin:0 auto;
width:800px;
}
.whole {
background: rgba(255, 255, 255, 0.5);
border:4px solid rgba(201, 201, 201, 0.5);
padding:5px;
margin-bottom:10px; …
Run Code Online (Sandbox Code Playgroud)

css internet-explorer css3

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

没有可用于新C++项目的MFC模板 - Visual C++ Express

我一直在谷歌上发布之前,但我还没有找到任何关于这个话题..但我不认为这是一个非常棘手的一个所以请原谅发布:o).

对于一份新工作我正在进入C++,并遵循一些教程.特别是一个是关于MFC,它显示了如何创建项目,选择MFC应用程序等.所以,我在Vista和Win 7上安装了Visual C++ Express 2010,两次都有同样的问题:当我去新项目时,我没有"MFC"菜单.该教程的一些截图,以及Visual C++ 2010上的其他一些截图清楚地表明它可以存在.更具体地说,在左上角我有"安装模板",然后是"Visual C++"和"CLR",Win32"和"General",没有MFC.

因为这些是"已安装的模板",我想我应该安装它,但我没有找到关于该主题的明确指示; 从我发现它应该或多或少从一开始就存在...我也找到了一种方法来通过创建一个Win32应用程序添加MFC DLL,但它似乎并没有完全相同的东西..我也花了一些时间在Visual C++的菜单,但没有找到任何明确的方法来添加像Eclipse中的新模板...

好吧,我希望我能说清楚,我认为这是非常基本的,但如果有人能帮助我,我会非常感激.

干杯文森特

c++ mfc visual-c++-2010-express

5
推荐指数
1
解决办法
8090
查看次数

WPF在进行中不更新文本框

我有这个代码:

void wait(int ms)
{
    System.Threading.Thread.Sleep(ms);
}

private void button1_Click(object sender, RoutedEventArgs e)
{
    info.Text = "step 1";
    wait(1000);
    info.Text = "step 2";
    wait(1000);
    info.Text = "step 3";
    wait(1000);
    info.Text = "step 4";
    wait(1000);
}
Run Code Online (Sandbox Code Playgroud)

问题是textbox.text在整个void button1_Click完成后更新.它没有在AIR上更新:(

拜托,怎么办?

wpf textbox progress

4
推荐指数
1
解决办法
9503
查看次数