小编sme*_*eso的帖子

Python多处理池,加入; 不等待继续?

(1)我试图使用pool.map之后pool.join(),但蟒蛇似乎并没有在等待pool.map完成才去上过pool.join().这是我尝试过的一个简单示例:

from multiprocessing import Pool

foo = {1: []}

def f(x):
    foo[1].append(x)
    print foo

def main():
    pool = Pool()
    pool.map(f, range(100))
    pool.close()
    pool.join()
    print foo

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

打印输出就好了{1: []},好像python只是忽略了join命令并print foo在它有机会运行之前运行f.预期的结果是,foo{1:[0,1,...,99]},使用普通的内置Python map给出了这样的结果.为什么合并版本打印{1: []},如何更改我的代码以使其打印预期结果?

(2)理想情况下,我也想定义foo为局部变量main()并将其传递给f,但是通过制作foo第一个参数f和使用它来做到这一点

pool.map(functools.partial(f, foo), range(100))

产生相同的输出.(并且可能还有一个问题,即每个进程现在都有自己的副本foo?)尽管如此,它仍然可以使用普通代码map.

python multiprocessing python-2.7

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

在没有root权限的Python中创建原始套接字

是否可以创建没有root权限的原始套接字?如果没有,脚本可以自己提升其权限吗?

我使用原始套接字编写了一个Python脚本:

#!/usr/bin/env python

import socket
rawSocket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.htons(0x0800))
print "Worked!"
Run Code Online (Sandbox Code Playgroud)

以root权限运行它打印Worked!.但是,使用普通用户权限运行时会出错.

我想以普通用户身份执行我的脚本,它应该创建一个原始套接字而不需要任何东西.可能吗?

python sockets linux raw-sockets

10
推荐指数
2
解决办法
5968
查看次数

如何在python中发送数据包?

我尝试使用这段代码在python中使用scapy发送数据包

data= "University of texas at San Antonio"
a=IP(dst="129.132.2.21")/TCP()/Raw(load=data)
sendp(a)
Run Code Online (Sandbox Code Playgroud)

但我在第三行"sendp(a)"中说错了

Traceback (most recent call last):
   File "<pyshell#7>", line 1, in <module>
     sendp(a)
   File "C:\Python25\lib\site-packages\scapy\sendrecv.py", line 259, in sendp
     __gen_send(conf.L2socket(iface=iface, *args, **kargs), x, inter=inter, loop=loop, 
   count=count, verbose=verbose, realtime=realtime)
   File "C:\Python25\lib\site-packages\scapy\arch\pcapdnet.py", line 313, in __init__
     self.outs = dnet.eth(iface)
   File "dnet.pyx", line 112, in dnet.eth.__init__
   OSError: No such file or directory
Run Code Online (Sandbox Code Playgroud)

请告诉我哪里错了.

python scapy

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

在Python中,为什么要写round(x [,n])而不是round(x,n)?

我不明白为什么他们用round(x[,n])语法编写,但在代码中他们round(10.6987,12)在逗号之前没有方括号写,即round(10.6987[,12])

python square-bracket

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