小编yas*_*sar的帖子

在python中使用多处理的策略

我是多处理的新手.我一直在阅读有关多处理模块的文档.我读过有关池,线程,队列等的内容,但我完全迷失了.

我想用多处理做的是,转换我简陋的http下载器,与多个工作者一起工作.我现在正在做的是,下载一个页面,解析到页面以获得有趣的链接.继续,直到下载所有有趣的链接.现在,我想用多处理来实现它.但我现在不知道如何组织这个工作流程.我有两个想法.首先,我想过有两个队列.需要下载的链接的一个队列,其他用于要解析的链接的队列.一名工作人员下载页面,并将其添加到队列中,该队列用于需要解析的项目.其他进程解析一个页面,并将它感兴趣的链接添加到另一个队列.我期望从这种方法出现的问题是:首先,为什么一次下载一页并一次解析页面.此外,一个进程如何知道在耗尽队列中的所有项目之后,有些项目要添加到队列中.

我想要使​​用的另一种方法是.有一个函数,可以用url作为参数调用.此函数下载文档并开始解析链接.每次遇到一个有趣的链接时,它会立即创建一个与自身运行相同功能的新线程.我对这种方法的问题是,我如何跟踪周围产生的所有进程,如何知道是否还有进程要运行.而且,我如何限制最大进程数.

所以我完全迷失了.任何人都可以建议一个好的策略,也许可以显示一些关于如何实现这个想法的示例代码.

python multithreading multiprocessing

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

mysql int字段增长超过11位

我有一个mysql数据库,我正在使用它作为临时存储验证码值.它有一个自动递增的id键,带有int(11)字段.如果此值大于11位,会发生什么?

mysql database integer

5
推荐指数
2
解决办法
7652
查看次数

base64编码图像而不保存

我可以base64编码我在运行中创建的图像,而无需先将其保存到磁盘吗?据我所知,base64_encode()只接受字符串,我找不到一种方法来反映图像源对象作为字符串而不先保存它,并加载它file_get_contents()

php base64 gd

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

构建时选择GCC版本(setup.py)

我正在尝试使用构建一个python模块(scikit.timeseries)

python setup.py build
Run Code Online (Sandbox Code Playgroud)

但是这样的错误:

/Versions/2.6/lib/python2.6/site-packages/numpy/core/include -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c'
gcc-4.0: scikits/timeseries/src/cseries.c
sh: gcc-4.0: command not found
Run Code Online (Sandbox Code Playgroud)

这是因为我在OSX Lion上并且gcc-4.0没有退出,gcc确实如此:

gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.0
Run Code Online (Sandbox Code Playgroud)

但它是别名的gcc而不是gcc-4.0.如何告诉setup.py查找gcc而不是gcc-4.0

谢谢 !

python gcc distutils

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

Python中的多处理和套接字

我试图让多处理和套接字编程一起工作,但是,我在这一点上陷入困​​境.问题是,我收到此错误:

  File "multiprocesssockserv.py", line 11, in worker
    clientsocket = socket.fromfd(clientfileno, socket.AF_INET, socket.SOCK_STREAM)
error: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

导致错误的完整代码如下:

import multiprocessing as mp
import logging
import socket

logger = mp.log_to_stderr(logging.WARN)

def worker(queue):
    while True:
        clientfileno = queue.get()
        print clientfileno
        clientsocket = socket.fromfd(clientfileno, socket.AF_INET, socket.SOCK_STREAM)
        clientsocket.recv()
        clientsocket.send("Hello World")
        clientsocket.close()

if __name__ == '__main__':
    num_workers = 5
    socket_queue = mp.Queue()
    workers = [mp.Process(target=worker, args=(socket_queue,)) for i in
            range(num_workers)]

    for p in workers:
        p.daemon = True
        p.start()

    serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    serversocket.bind(('',9090))
    serversocket.listen(5) …
Run Code Online (Sandbox Code Playgroud)

python sockets file-descriptor multiprocessing

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

“缺少需要 TRUE/FALSE 的值”错误 vcd::mosaic

> library(vcd)
Loading required package: MASS
Loading required package: grid
Loading required package: colorspace
> library(MASS)
> tbl = table(survey$W.Hnd,survey$Fold)
> print(tbl)

        L on R Neither R on L
  Left      10       1      7
  Right     88      17    113
> mosaic(tbl)
Error in if (split_vertical[i]) { : missing value where TRUE/FALSE needed
Calls: mosaic -> mosaic.default -> strucplot -> labeling
Execution halted
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误,以及如何修复代码?


简单粘贴代码在这里:

library(vcd)
library(MASS)
tbl = table(survey$W.Hnd,survey$Fold) # survey is a library data set in MASS
print(tbl)
mosaic(tbl) # produces …
Run Code Online (Sandbox Code Playgroud)

r

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

如何从互联网上随机抽样?

我试图获取随机的网页样本,我不想因各种原因而废弃谷歌搜索结果.以下是我尝试过的方法;

import socket
from random import randint

def doesitserveawebpage(ip):
    ip=str(ip)
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        s.connect((ip, 80))
        s.shutdown(2)
        return True
    except:
        return False

def givemerandomwebsite():
    adrformat = "%d.%d.%d.%d"
    while True:
        adr = adrformat % tuple(randint(0,255) for _ in range(4))
        try:
            print "Tring %s" % adr
            name = socket.gethostbyaddr(adr)
            if (doesitserveawebpage(adr)):
                return name
            else:
                continue
        except socket.herror:
            continue
Run Code Online (Sandbox Code Playgroud)

好吧,它不起作用.首先,它的工作太慢了.其次,它给了我不提供网页的地址.无论如何我可以使这个代码更好,或者你会建议另一种方法来解决这个问题?

python random-sample

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

Python unittest 突然退出

有没有办法在不等待所有测试完成的情况下,在发生错误或失败时立即进行 python unittest(我使用的是 2.6,我有 unittest2 可用)?

还有一个额外的问题:) 有没有办法订购测试。例如,在前面可能会失败的拉测试?

python unit-testing

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

这种类型的意思是什么?

我是C的新手,这种typedef对我来说有点奇怪.有人可以解释它的作用吗?

typedef void (*alpm_cb_log)(alpm_loglevel_t, const char *, va_list);
Run Code Online (Sandbox Code Playgroud)

它位于头文件中.

c typedef

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

如何在linux机器上并行执行多个perl脚本?

我想从目录运行所有脚本.喜欢 ,

该目录包含40个脚本,我想先并行运行5个脚本.在完成这些脚本之后,将执行下一个5脚本以及剩余的脚本.

请使用linux和perl命令提供任何解决方案

linux perl

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